Spec-Zone.ru › HTTP

CSP: report-uri

CSP: report-uri

Устаревшее: Эта функция больше не рекомендуется. Хотя некоторые браузеры могут её всё ещё поддерживать, она может быть удалена из соответствующих веб-стандартов, может быть в процессе удаления или может поддерживаться только для совместимости. Избегайте её использования и, если возможно, обновите существующий код; см. таблицу совместимости внизу этой страницы, чтобы принять решение. Имейте в виду, что эта функция может перестать работать в любое время.

Устаревшая директива HTTP Content-Security-Policy (CSP) report-uri сообщает агенту пользователя об attemptциях нарушения Content Security Policy. Эти отчёты о нарушениях состоят из JSON-документов, отправляемых через HTTP-запрос POST по указанному URI.

Предупреждение: Хотя директива report-to предназначена для замены устаревшей директивы report-uri , report-to пока не поддерживается в большинстве браузеров. Поэтому для совместимости с текущими браузерами и для добавления совместимости с будущими браузерами, когда будет поддержка report-to, вы можете указать как report-uri , так и report-to:

Content-Security-Policy: …; report-uri https://endpoint.com; report-to groupname

В браузерах, которые поддерживают report-to, директива report-uri будет проигнорирована.

Эта директива сама по себе не имеет эффекта, но приобретает значение только в сочетании с другими директивами.

Версия CSP 1
Тип директивы Директива отчёта
Эта директива не поддерживается в элементе <meta>.

Синтаксис

Content-Security-Policy: report-uri <uri>;
Content-Security-Policy: report-uri <uri> <uri>;
<uri>

URI для отправки отчёта.

Примеры

См. Content-Security-Policy-Report-Only для получения дополнительной информации и примеров.

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

/csp-violation-report-endpoint/ может, например, запустить PHP-скрипт, подобный следующему, который записывает JSON, описывающий нарушение, и, если нарушение является первым добавленным в журнал, отправляет электронное письмо администратору:

    <?php

    // Start configure
    $log_file = dirname(__FILE__) . '/csp-violations.log';
    $log_file_size_limit = 1000000; // bytes - once exceeded no further entries are added
    $email_address = 'admin@example.com';
    $email_subject = 'Content-Security-Policy violation';
    // End configuration

    $current_domain = preg_replace('/www\./i', '', $_SERVER['SERVER_NAME']);
    $email_subject = $email_subject . ' on ' . $current_domain;

    http_response_code(204); // HTTP 204 No Content

    $json_data = file_get_contents('php://input');

    // We pretty print the JSON before adding it to the log file
    if ($json_data = json_decode($json_data)) {
      $json_data = json_encode($json_data, JSON_PRETTY_PRINT | JSON_UNESCAPED_SLASHES);

      if (!file_exists($log_file)) {
        // Send an email
        $message = "The following Content-Security-Policy violation occurred on " .
          $current_domain . ":\n\n" .
          $json_data .
          "\n\nFurther CPS violations will be logged to the following log file, but no further email notifications will be sent until this log file is deleted:\n\n" .
          $log_file;
        mail($email_address, $email_subject, $message,
             'Content-Type: text/plain;charset=utf-8');
      } else if (filesize($log_file) > $log_file_size_limit) {
        exit(0);
      }

      file_put_contents($log_file, $json_data, FILE_APPEND | LOCK_EX);
    }

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

Спецификация
Content Security Policy Level 3
# directive-report-uri

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

Рабочие столы Мобильные устройства
Chrome Edge Firefox Internet Explorer Opera Safari WebView Android Chrome Android Firefox for Android Opera Android Safari на IOS Samsung Internet
report-uri
25
14
23
Нет
15
7
Да
Да
23
Да
7
Да

См. также

  • Content-Security-Policy
  • Content-Security-Policy-Report-Only
  • report-to

© 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-uri

Spec-Zone.ru

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