2009-08-25 12 views
7

アプリケーションサーバープロセスを実行しているユーザーの権限でJava Webアプリケーションを保護するだけで十分ですか、適切なポリシーファイルでSecurityManagerを使用することも妥当ですか?Java WebアプリケーションでSecurity Managerを使用する必要がありますか?

私は前者を使用していましたが後者ではありませんでしたが、一部のお客様は、そこに潜んでいる悪意のあるコードがないように、第三者コンポーネントに明示的にアクセス許可を与えるSecurityManagerも使用したいと考えています。

私は物事を遅くするのSecurityManagerを使用していない提案するResinのように、いくつかのサーブレットコンテナを見てきました。何かご意見は?

答えて

9

セキュリティ機能を使用してではなくを推奨することは嫌いですが、セキュリティマネージャは、信頼できないコードやサードパーティのコードがJVMで実行されている状況を管理することを意図しています。アプレット、またはホストされている共有アプリケーションサーバーのシナリオを考えてください。あなたがアプリケーションサーバーを完全に制御して他の誰かのコードを実行していないなら、私はそれが冗長だと思う。 SecurityManagerを有効にすると、パフォーマンスに大きな影響を与えます。何を保護したいんし、あなたからそれを保護するために何をしたいですか:それは本当に依存しているため

+0

私たちの場合、3番目のコードは、さまざまな既知のOSライブラリです。潜在的な「悪い」コードが存在するかどうかを確認するために、コードのすべての行を見直す作業はかなり大変です。私はこれらの図書館を信じていますが、私たちの顧客は少し不安です。 – Kaitsu

+0

他人のコードを実行していないと言う前に注意する必要があります。たとえば、XML外部のエンティティ(XEE)攻撃は、XMLを解析する場合に使用できますが、ほとんどの人はそれが「単なるデータ」と言います。 – bgiles

1

、単純なはい/あなたの質問への応答がありませんか?

は例えば、私は、IPフィルタリングを実装し、唯一のホワイトリストIPアドレスが自分のアプリケーションに接続できるようにするためにSecurityManagerのを使用しました。ディスクファイルへのアクセスを許可しないようにするには、権限の低いユーザーとしてアプリケーションを実行する方が良い解決策です。あなたがすべてでサードパーティ製のプラグインを信頼していない場合は

、あなたはプラグインのコードの実行を許可したら、それはあなたがセキュリティマネージャを使用している場合でもしたい場合は、そのプラグインは、アプリケーションがクラッシュすることがあることを覚えておいてください。あなたのアプリケーションがプラグインを読み込む場合、おそらくプラグインをホワイトリストに入れ、プラグインを読み込む前にリストをチェックする方が良い解決法です。

あなたがそれを使用することを決定した場合(JVMは、より多くのチェックを行いますので)、あなたはパフォーマンスヒットがかかりますが、どのように速く、それは本当にチェックを行いますあなたのコード/構成によって異なり実行されます。私のIPホワイトリストは、単一のリストの検索だけを含んでいたのでかなり高速でした。リモートWebサービスの呼び出しとデータベースへのアクセスが含まれている場合は、多くの作業を遅くすることができますが、十分なハードウェアと同時使用できるユーザーが少ない(つまり、余裕があれば) 。

1

が正しくJavaでセキュリティマネージャをconfigurinすることは難しいことができます。たとえば、セキュリティマネージャ自体を制限しない場合は、Security Managerをnullに設定するだけですべてのセキュリティをバイパスできます。 RMI:あなたのJVMが信頼できないコードを実行する場合、セキュリティマネージャを使用して

だけで、あなたがそれぞれの機能(例のために設定すべきかパーミッション事前に知っておく必要がありますので、それ以外の場合は、設定するための痛みで、理にかなっています、ソケット、I/O)と、各クライアントのためのものです。

関連する問題