Spec-Zone.ru › HTTP

Отчёт о политике безопасности контента (только отчёт)

Отчёт о политике безопасности контента (только отчёт)

Заголовок ответа 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). Это делается для предотвращения утечки конфиденциальной информации о ресурсах других источников.

Спецификации

Спецификация
Политика безопасности контента уровня 3
# cspro-header

Совместимость с браузерами

Рабочие столы Мобильные устройства
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

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API