Сведения о нарушении политики безопасности контента отсутствуют в report-uri

Chrome сообщает report-uri о нарушениях Политики безопасности контента, но не сообщает подробностей о нарушениях. Он сообщает {} вместо того, чтобы предоставлять подробную информацию о нарушенной политике. Все остальные браузеры, похоже, сообщают о нарушениях в порядке. Моя политика представлена ​​ниже.

Я пробовал ...

  1. помещая полный абсолютный путь в директиву report-uri.
  2. вывод политики из режима Report-Only
  3. сделать политику намного проще, например default-src 'none' ; report-uri /api/csp-report;
  4. отключение всех моих расширений (хотя я вижу это на рабочем сайте от посетителей win и osx с хромом)
  5. тестирование на Канарских островах
  6. "Сообщил о проблеме" в хроме (я предполагаю, что он еще даже не был отсортирован)

Вопросы, на которые я еще не нашел ответа

  1. Это уже реализовано в Chrome?
  2. Реализация отличается от спецификации?

Политика (доставляется через заголовок HTTP)

Content-Security-Policy-Report-Only: default-src «Нет»; script-src 'self' 'unsafe-eval' https://www.google-analytics.com; style-src 'self' 'unsafe-inline' https://fonts.googleapis.com; img-src 'self' https://www.google-analytics.com; font-src 'self' https://fonts.gstatic.com; connect-src 'self' https://api.servicesite.com; frame-src 'нет'; child-src 'нет'; фрейм-предки 'none'; форма-действие «я»; обновления-небезопасные-запросы; блокировать все смешанное содержимое; блок отраженного xss; base-uri https: //*.mysite.com; происхождение реферера при перекрестном происхождении; отчет-uri / api / csp-отчет;

Обновление ... Mar-16-2016

  • Chrome отправляет отчет. Я вижу тело запроса на вкладке сети. Также регистрируем его в промежуточном прокси-сервере nginx.

Это наводит меня на мысль, что это проблема синтаксического анализа в моем принимающем коде (node, express using body-parser). Однако все еще не понимает, почему это может происходить только с отчетами Chrome CSP. Все остальные отчеты браузера проходят нормально.


person heme    schedule 15.03.2016    source источник


Ответы (1)


  • Chrome правильно отправляет отчеты CSP "с полем заголовка Content-Type приложения / csp-report" в соответствии со спецификацией CSP уровня 2 (https://www.w3.org/TR/CSP/#нарушение-reports)
  • Другие браузеры по-прежнему отправляют application/json, описанный в спецификации CSP уровня 1
  • Принимаю отчеты с помощью nodejs + expressjs + body-parser. По умолчанию body-parser анализирует только запросы, в которых content-type: application/json должен был включать application/csp-report в качестве допустимого типа содержимого для анализа.

Изменил это ...

app.use(bodyParser.json());

К этому ...

app.use(bodyParser.json({type: ['application/json', 'application/csp-report']}));

person heme    schedule 16.03.2016