草案
このページは完成していません。
Web サイトの管理者のための Content Security Policy の強力な機能の一つは、あなたのサイトへの攻撃を記録したレポートを生成し、届ける機能をサポートしていることです。これらのレポートは、HTTP POST 要求により、report-uri
ポリシーディレクティブで指定した複数のサーバへ届けられます。レポートは JSON 形式です。この記事は、レポート機能を使用するようにサイトを設定する方法と、レポートの形式を紹介します。
CSP をサポートするブラウザは常に、各ポリシー違反についての違反レポートを送信します。これは、正当な report-uri ディレクティブが含まれたポリシーが確立されている場合のポリシーに対する違反です。
レポートの有効化
デフォルトでは、違反レポートは送信されません。違反レポートを有効にするには、report-uri
ポリシーディレクティブを設定し、少なくとも一つのレポート送信先の URI を指定する必要があります:
Content-Security-Policy: default-src self; report-uri https://reportcollector.example.com/collector.cgi
次に、レポートを受信するサーバをセットアップする必要があります。運用に合わせて適切にレポートを保存または処理してください。
注記: Firefox 23 より前は、X-Content-Security-Policy ヘッダを使用していました。このヘッダは、将来非推奨になるでしょう。
違反レポートの構文
レポートの JSON オブジェクトには、次のデータが含まれます:
document-uri
- 違反が発生したドキュメントの URI です。
referrer
- 違反が発生したドキュメントのリファラです。
blocked-uri
- Content Security Policy により読み込みがブロックされたリソースの URI です。ブロックされた URI が document-uri とは異なる生成元に由来する場合は、ブロックされた URI がスキーマ、ホスト、ポートだけを含むように切り詰められます。
violated-directive
- 違反があったポリシーセクションの名前です。
original-policy
Content-Security-Policy
HTTP ヘッダに指定された元のポリシーです。
違反レポートのサンプル
https://example.com/signup.html
に置かれたページを仮定します。このサイトには、次のポリシーが設定されています:
Content-Security-Policy: default-src 'self'; img-src 'self' *.example.com; report-uri /_/csp-reports
evil.example.net
にある攻撃者の Web ページが signup.html
にリンクして、signup.html
が injected.png
を含むようにだました場合、ブラウザは以下の違反レポートを POST リクエストで https://example.com/_/csp-reports
に送信します:
{ "csp-report": { "document-uri": "https://example.com/signup.html", "referrer": "https://evil.example.net/haxor.html", "blocked-uri": "https://evil.example.net/injected.png", "violated-directive": "img-src *.example.com", "original-policy": "default-src 'self'; img-src 'self' *.example.com; report-uri /_/csp-reports", } }