为什么Chrome在内容安全策略设置为self和hash的情况下“拒绝在jQuery中应用内联样式”

时间:2019-04-27 22:06:29

标签: jquery google-chrome content-security-policy

我有一个使用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仍然会产生大量错误: console screenshotscreenshot with non-minifed version of jQuery

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在“自我”或哈希允许的情况下会禁止脚本编辑样式。

1 个答案:

答案 0 :(得分:0)

如果您设置了“不安全内联”,则可能会起作用。我知道那不是您想要允许的。 jQuery可能正在使用不安全的内联样式。

我对atm感到非常累,但是如果您想读一读,您可能会找到答案:https://github.com/jquery/jquery/issues/3541

此外,在哪里记录着可以为数据uri指定允许的MIME类型?我从未见过img-src 'self' data: image/png;。难道不是img-src 'self' data:;吗?