0

Java セキュリティ マネージャが grant { ... } 句を評価する順序と範囲を調べようとしています。たとえば、ダウンロードしたコードの一部に、ユーザーのホームディレクトリの特定のサブディレクトリからの読み取りと書き込みを許可したい場合)、他のすべてのコードは、最大 2 レベル上 (つまり、サブディレクトリとユーザーのホームディレクトリの下)。(.../X/Y/Z.../X

どうすればそれを指定できますか? 次のようなシーケンスは正しいでしょうか?

... 
grant codebase http://foo.bar.com/test.jar {
   permission java.io.FilePermission "${user.dir}/X/Y/Z/*", "read,write"; }; 
...
grant {
   permission java.io.FilePermission "${user.dir}/X/-", "read"; };
...

つまり、ファイルの一部としてダウンロードされたコードのセキュリティ評価はtest.jar、最初の grant 句の後で停止しますか (したがって、たとえば directory への読み取りアクセスは許可されません.../X/Y)。

そして、上記の設定で、現在のアプリケーションのどのコードも上位、つまりユーザーのホームディレクトリ自体 (またはさらに上位..) にアクセスできないことを確認できますか?

4

2 に答える 2

0

クラスには、適用可能なパーミッションのセット全体が与えられます。ここでは順序はあまり意味がありません。

于 2013-07-08T15:17:30.570 に答える
0

次の JVM 引数を指定すると、ポリシーが適用される (場合によっては拡張される) 順序を出力できます。

-Djava.security.manager -Djava.security.debug=all

サンプル出力を投稿しますが、コンソール出力が非常に長いことがわかりました。

  • 評価の順序に関する質問に直接答えるには、システムの仕様に関する信頼できるドキュメントを見つけることができなかったので、実装で定義されていると思います。

  • ユーザーのホーム ディレクトリにアクセスできないことの保証については、ロードされているすべてのポリシー ファイル (JRE インストールにバンドルされているものと、存在する場合は user.home にあるものを含む) を確認せずに言うことはできません。

幸運を!

于 2013-09-24T02:07:57.630 に答える