Нарушение CSP только в Firefox - PullRequest
0 голосов
/ 14 июля 2020

У меня проблемы с CSP, выкидывающим нарушение там, где этого не должно быть. Это не должно быть проблемой, потому что у меня включен strict-dynamic, и он работает в других браузерах. Однако Firefox имеет проблему с конкретным скриптом.

{
    "csp-report": {
        "blocked-uri": "inline",
        "column-number": 373,
        "document-uri": "https://mydomain.app/login",
        "line-number": 52,
        "original-policy": "default-src 'self' https://static.zdassets.com https://ekr.zdassets.com https://mydomain.zendesk.com wss://mydomain.zendesk.com wss://*.zopim.com https://*.adroll.com; font-src 'self' https://fonts.googleapis.com https://fonts.gstatic.com https://maxcdn.bootstrapcdn.com; style-src 'self' https://fonts.googleapis.com https://maxcdn.bootstrapcdn.com 'unsafe-inline'; img-src * https: data:; media-src 'self' https://static.zdassets.com; frame-src 'self' https://www.googletagmanager.com; script-src 'nonce-[removed]' 'unsafe-inline' 'unsafe-eval' 'strict-dynamic' https: http:; report-uri https://mydomain.report-uri.com/r/d/csp/reportOnly",
        "source-file": "https://s.adroll.com/j/roundtrip.js",
        "violated-directive": "script-src"
    }
}

Скрипт Adroll добавлен следующим образом:

<!-- AdRoll -->
<script type="text/javascript" nonce="{{ $scriptnonce }}">
   ...
   var scr = document.createElement("script");
   scr.src = host + "/j/roundtrip.js";

   // manually adding this to try and solve the problem
   scr.setAttribute('nonce', '{{ $scriptnonce }}');
</script>

Этот фрагмент предоставляется нам adroll и создает скрипт adroll тег в заголовке страницы. Одноразовый номер не нужен в блоке createElement(), потому что здесь должен применяться strict-dynamic, и мы уже поместили одноразовый номер в содержащий тег.

Кроме того, сценарий adroll, вызывающий нарушение, сам добавление тега сценария с createElement(), который может вызывать нашу проблему, но опять же, я бы подумал, что strict-dynamic справится с этим.

Наша политика довольно хорошо отлажена, мы не получаем ошибок в другом месте, и мы эффективно используем strict-dynamic и nonces во всем приложении.

Вы можете скопировать исходную политику в оценщик CSP Google, чтобы убедиться, что политика завершена.

Есть идеи, почему Firefox ведет себя так и как это исправить? Из-за этого скрипта нас заваливают отчетами!

...