Отчёт о политике безопасности контента (только отчёт)
Отчёт о политике безопасности контента (только отчёт)
Заголовок ответа HTTP Content-Security-Policy-Report-Only позволяет веб-разработчикам экспериментировать с политиками, отслеживая (но не применяя) их влияние. Эти отчёты о нарушениях представляют собой документы JSON, отправляемые через запрос HTTP POST по указанному URI.
Для получения дополнительной информации ознакомьтесь также со статьёй о Политике безопасности контента (CSP).
| Тип заголовка | Заголовок ответа |
|---|---|
| Запрещённое имя заголовка | нет |
Этот заголовок не поддерживается внутри элемента <meta>. | |
Синтаксис
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/
Если вы всё ещё хотите получать отчёты, но также хотите применять политику, используйте заголовок Content-Security-Policy с директивой report-uri.
Content-Security-Policy: default-src https:; report-uri /csp-violation-report-endpoint/
Синтаксис отчёта о нарушении
Объект JSON отчёта содержит следующие данные:
blocked-uri-
URI ресурса, загрузка которого была заблокирована политикой безопасности контента. Если заблокированный URI имеет другой источник, чем документ-URI, то заблокированный URI сокращается, содержа в себе только схему, хост и порт.
disposition-
Либо
"enforce", либо"report", в зависимости от того, используется ли заголовокContent-Security-Policyили заголовокContent-Security-Policy-Report-Only. document-uri-
URI документа, в котором произошло нарушение.
effective-directive-
Директива, применение которой привело к нарушению.
original-policy-
Исходная политика, как указано в заголовке HTTP
Content-Security-Policy-Report-Only. referrer-
Ссылка на документ, в котором произошло нарушение.
script-sample-
Первые 40 символов встроенного скрипта, обработчика событий или стиля, которые привели к нарушению.
status-code-
Код HTTP-статуса ресурса, на котором был создан глобальный объект.
violated-directive-
Имя раздела политики, нарушенной.
Пример отчёта о нарушении
Рассмотрим страницу, расположенную по адресу http://example.com/signup.html. Она использует следующую политику, запрещая всё, кроме таблиц стилей из cdn.example.com.
Content-Security-Policy-Report-Only: default-src 'none'; style-src cdn.example.com; report-uri /_/csp-reports
HTML страницы signup.html выглядит следующим образом:
<!DOCTYPE html> <html lang="en-US"> <head> <meta charset="UTF-8" /> <title>Sign Up</title> <link rel="stylesheet" href="css/style.css" /> </head> <body> Page content </body> </html>
Вы видите нарушение? Таблицы стилей разрешены только для загрузки из cdn.example.com, но сайт пытается загрузить таблицу стилей из своего собственного источника (http://example.com). Браузер, способный применять CSP, отправит следующий отчёт о нарушении в виде POST-запроса по адресу http://example.com/_/csp-reports, при посещении страницы:
{ "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" } }
Как видите, отчёт включает полный путь к нарушающему ресурсу в blocked-uri. Это не всегда так. Например, когда signup.html попытался загрузить CSS из http://anothercdn.example.com/stylesheet.css, браузер не включил бы полный путь, а только источник (http://anothercdn.example.com). Это делается для предотвращения утечки конфиденциальной информации о ресурсах других источников.
Спецификации
Совместимость с браузерами
| Рабочие столы | Мобильные устройства | |||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|
| Chrome | Edge | Firefox | Internet Explorer | Opera | Safari | WebView Android | Chrome Android | Firefox для Android | Opera Android | Safari на iOS | Samsung Internet | |
Content-Security-Policy-Report-Only |
25 |
14 |
23 |
10 |
15 |
7 |
4.4 |
Да |
23 |
Нет |
7 |
Да |
См. также
Content-Security-Policy- Директива CSP
report-uri
© 2005–2022 MDN contributors.
Licensed under the Creative Commons Attribution-ShareAlike License v2.5 or later.
https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Content-Security-Policy-Report-Only