Почему chrome «отказывается применять встроенный стиль» в jQuery с политикой безопасности содержимого, для которой задано значение self и hash - PullRequest
1 голос
/ 28 апреля 2019

У меня есть сайт начальной загрузки, который использует jQuery v3.4.0 (3.3.x имела ту же проблему). Заголовок с сайта с политикой безопасности контента выглядит так:

HTTP/1.0 200 OK
Content-Type: text/html; charset=utf-8
Content-Length: 2275
X-Frame-Options: SAMEORIGIN
X-XSS-Protection: 1; mode=block
X-Content-Type-Options: nosniff
Content-Security-Policy: default-src 'self'; img-src 'self' data: image/png; style-src 'self' 'sha256-47DEQpj8HBSa+/TImW+5JCeuQeRkm5NMpJWZG3hSuFU='
X-Content-Security-Policy: default-src 'self'; img-src 'self' data: image/png; style-src 'self' 'sha256-47DEQpj8HBSa+/TImW+5JCeuQeRkm5NMpJWZG3hSuFU='
Referrer-Policy: strict-origin-when-cross-origin
Vary: Cookie
Server: Werkzeug/0.15.1 Python/3.6.7
Date: Sat, 27 Apr 2019 21:37:07 GMT

Все мои скрипты размещены локально (так что 'self' должно хватить), нет встроенных скриптов или атрибуты стиля используются на самом сайте, но Chrome по-прежнему генерирует большое количество ошибок: скриншот консоли , скриншот с jQuery-версией без minifed

Refused to apply inline style because it violates the following Content Security Policy directive: "style-src 'self' 'sha256-47DEQpj8HBSa+/TImW+5JCeuQeRkm5NMpJWZG3hSuFU='". Either the 'unsafe-inline' keyword, a hash ('sha256-47DEQpj8HBSa+/TImW+5JCeuQeRkm5NMpJWZG3hSuFU='), or a nonce ('nonce-...') is required to enable inline execution.

Как видите, я также добавил хеш, который сам Chrome сгенерировал, в CSP, но, что бы я ни изменял (также пытался добавить этот хеш в 'script-src'), я все равно получаю ошибки того же типа.

Есть много похожих вопросов о chrome и CSP, но ни один из них не ответил, почему chrome запрещает сценарию редактировать стили, если это разрешено "self" или хэшем.

1 Ответ

0 голосов
/ 05 июня 2019

Если вы установите «unsafe-inline», это, вероятно, сработает. Я понимаю, что это не то, что вы хотите разрешить, хотя. JQuery, вероятно, использует небезопасные встроенные стили.

Я очень устал, но если вы хотите прочитать это, вы можете найти ответ: https://github.com/jquery/jquery/issues/3541

Кроме того, где задокументировано, что вы можете указать разрешенные типы MIME для данных URI? Я никогда не видел img-src 'self' data: image/png;. Разве это не должно быть img-src 'self' data:;?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...