web-dev-qa-db-ja.com

コンテンツセキュリティポリシー:ページの設定により、リソースの読み込みがブロックされましたか?

Tomcat 6でJavaベースのWebアプリケーションを実行しています。アプリケーションはlocalhostとポート9001で実行しています。

アプリケーションのセキュリティを強化し、 [〜#〜] xss [〜#〜] 攻撃のリスクを軽減するために、ヘッダーContent-Security-Policyに値を追加しました=)default-src * 'unsafe-inline' 'unsafe-eval'; script-src 'self'。これにより、Webアプリケーションが同じドメインからJavaScriptファイルをロードできるようにします。

他のリソースについては、このヘッダーがない場合と同じ方法でロードを続けます。

しかし、以下のエラーが発生します。

Content Security Policy: The page's settings blocked the loading of a resource at self ("script-src http://localhost:9001").
12
emilly

コンテンツセキュリティポリシーヘッダーは、信頼できるソースのホワイトリストです。

default-srcリストは、他のすべての*-srcリストで使用されるリストです。存在しない場合、デフォルトはdefault-src: *であり、これは「すべてのコンテンツがどこからでも許可される」ことを意味し、XSSに対する保護を提供しません。

したがって、あなたは

  • default-src none、すべてのコンテンツが許可されないようにする、または
  • default-src 'self'。ドメインのコンテンツのみが許可されます。

その後、他の*-srcは必要に応じて置き換えることができます。たとえば、次の例では、イメージ以外のすべてに対して自己を信頼しており、イメージはexample.comからのみ許可されています( 'self'からは許可されていません)。

default-src 'self'; img-src example.com;

質問ではdefault-src * 'unsafe-inline' 'unsafe-eval';を指定します。これは、*がすでに'unsafe-inline'および'unsafe-eval'を示唆しているため、問題を引き起こしている可能性があります。 「すべてを許可し、インラインを許可し、evalを許可する」と言うようなものです。

また、CSPは、IE> = 8のX-Content-Security-Headerを介してサポートされています。

出典:

5
kuporific