Content-Security-Policy-Report-Only

この翻訳は不完全です。英語から この記事を翻訳 してください。

HTTP Content-Security-Policy-Report-Only レスポンスヘッダーを使用すると、Web デベロッパーはエフェクトを監視 (ただし強制はしない) してポリシーを試すことができます。これらの違反レポートは JSON の文書で構成され、HTTP POST リクエストを介して指定された URI に送信されます。

詳細については、コンテンツセキュリティポリシー (CSP) のこの記事も参照してください。

ヘッダータイプ Response header
Forbidden header name いいえ
This header is not supported inside a <meta> element.

構文

Content-Security-Policy-Report-Only: <policy-directive>; <policy-directive>

ディレクティブ

Content-Security-Policy ヘッダーの指示は、Content-Security-Policy-Report-Only にも適用できます。

CSP report-uri ディレクティブはこのヘッダーとともに使用する必要があります。そうでなければ、このヘッダーは高価なノーオペレーションマシンになります。

このヘッダーは発生した違反を報告します。これを使用して、コンテンツセキュリティポリシーを反復的に処理できます。あなたのサイトの振る舞いを観察し、違反報告を監視し、Content-Security-Policy ヘッダーで要求されているポリシーを選択します。

Content-Security-Policy-Report-Only: default-src https:; report-uri /csp-violation-report-endpoint/

依然としてレポートを受信したいが、ポリシーを強制したい場合は、report-uri ディレクティブで Content-Security-Policy ヘッダーを使用してください。

Content-Security-Policy: default-src https:; report-uri /csp-violation-report-endpoint/

違反レポートの構文

レポート JSON オブジェクトには、次のデータが含まれています。

blocked-uri
The URI of the resource that was blocked from loading by the Content Security Policy. If the blocked URI is from a different origin than the document-uri, then the blocked URI is truncated to contain just the scheme, host, and port.
disposition
Either "enforce" or "reporting" depending on whether the Content-Security-Policy header or the Content-Security-Policy-Report-Only header is used.
document-uri
The URI of the document in which the violation occurred.
effective-directive
The directive whose inforcement caused the violation.
original-policy
The original policy as specified by the Content-Security-Policy-Report-Only HTTP header.
referrer
The referrer of the document in which the violation occurred.
script-sample
The first 40 characters of the inline script, event handler, or style that caused the violation.
status-code
The HTTP status code of the resource on which the global object was instantiated.
violated-directive
The name of the policy section that was violated.

違反レポートのサンプル

Let's consider a page located at http://example.com/signup.html. It uses the following policy, disallowing everything but stylesheets from cdn.example.com.
Content-Security-Policy-Report-Only: default-src 'none'; style-src cdn.example.com; report-uri /_/csp-reports
The HTML of signup.html looks like this:
<!DOCTYPE html>
<html>
  <head>
    <title>Sign Up</title>
    <link rel="stylesheet" href="css/style.css">
  </head>
  <body>
    ... Content ...
  </body>
</html>
Can you spot the violation? Stylesheets are only allowed to be loaded from cdn.example.com, yet the website tries to load one from its own origin (http://example.com). A browser capable of enforcing CSP will send the following violation report as a POST request to http://example.com/_/csp-reports, when the document is visited:
{
  "csp-report": {
    "document-uri": "http://example.com/signup.html",
    "referrer": "",
    "blocked-uri": "http://example.com/css/style.css",
    "violated-directive": "style-src cdn.example.com",
    "original-policy": "default-src 'none'; style-src cdn.example.com; report-uri /_/csp-reports",
    "disposition": "report"
  }
}

As you can see, the report includes the full path to the violating resource in blocked-uri. This is not always the case. For example, when the signup.html would attempt to load CSS from http://anothercdn.example.com/stylesheet.css, the browser would not include the full path but only the origin (http://anothercdn.example.com). This is done to prevent leaking sensitive information about cross-origin resources.

仕様

仕様書 ステータス コメント
Content Security Policy Level 3 草案 変更なし
Content Security Policy Level 2 勧告 初回定義

ブラウザの互換性

Update compatibility data on GitHub
デスクトップモバイル
ChromeEdgeFirefoxInternet ExplorerOperaSafariAndroid webviewAndroid 版 ChromeEdge MobileAndroid 版 FirefoxAndroid 版 OperaiOS 版 SafariSamsung Internet
基本対応Chrome 完全対応 25Edge 完全対応 14Firefox 完全対応 23IE 完全対応 10Opera 完全対応 15Safari 完全対応 7WebView Android 完全対応 4.4Chrome Android 完全対応 ありEdge Mobile 完全対応 ありFirefox Android 完全対応 23Opera Android ? Safari iOS 完全対応 7.1Samsung Internet Android 完全対応 あり

凡例

完全対応  
完全対応
実装状況不明  
実装状況不明

関連情報

ドキュメントのタグと貢献者

このページの貢献者: silverskyvicto
最終更新者: silverskyvicto,