カスタムSecurityManagerを使用して、外部からロードされたコードをサンドボックス化しようとしています。私が持っているSecurityManagerは正常に動作します。ここで提案されている多数の投稿と同じアプローチを採用しました。潜在的に危険なコードが実行されるたびにカスタムマネージャーを設定してから、標準マネージャーに戻します。これは正常に機能し、私が望むことを実行します。ただし、アプリケーションはマルチスレッドです。カスタムマネージャーを使用する2つのスレッド、デフォルトのスレッドを使用するスレッドです。これにより、別のスレッドがカスタムセキュリティマネージャーを設定するだけで、信頼できるコードが正しく実行されなくなる可能性があります。これを回避する方法はありますか?あるいは、完全にもっと良い方法はありますか?同じセキュリティマネージャで異なるポリシーを使用することについて話している投稿をいくつか見ましたが、これの良い例を見つけることができませんでした。どんな助けでも大歓迎です。
2023 次
3 に答える
3
SecurityManagerは、実行中のスレッドを確認できます。単純なスレッドローカルがこれを行いますが、作成された追加のスレッドがスレッドのセキュリティレベルを「継承」するように、InheritableThreadLocalが必要な場合があります。
于 2011-05-10T12:18:14.643 に答える
3
アプリケーション全体に1つのセキュリティマネージャーを使用します。Javaセキュリティフレームワークは、このシナリオを処理するように設計されています。物事を機能させる方法は、ポリシーファイルのコードベース機能を使用することです。これにより、さまざまなコードベースにさまざまなアクセス許可を割り当てることができます。「メイン」コードベースに「すべての権限」を割り当てることができ、通常どおり機能します。インポートされたコードは、制限されたコードベースに割り当てることができます。
これはすべてここに詳細に文書化されています。おそらく、この問題に最も関連する部分はポリシーファイル情報です。
于 2011-05-10T14:19:18.587 に答える
0
現在のスレッドをテストしたり、セキュリティ制限を削除したりすることはお勧めできません。たとえば、信頼できないコードに、スリープするのが好きなファイナライザーがあるとしますか?
于 2011-05-10T14:03:16.260 に答える