我在设置CSP时遇到问题。我已连接snap.svg.js lib以在我的页面上实现动画。这个libs使我的动画有很多内联样式(对于我的svg中的每一个,大约2000+)。所以,如果我没有像这样指定'unsafe-inline'
:
...
"style-src 'unsafe-inline'; "
...
,我在控制台中会有很多违规行为。但我不希望在安全性方面允许内联样式。如何才允许仅显示从snap.svg.js lib生成的内联样式?
我的csp(报告仅用于测试):
$csp = "Content-Security-Policy-Report-Only: "
. "default-src 'self' http://gc.kis.v2.scr.kaspersky-labs.com ; "
. "font-src 'self' https://fonts.googleapis.com https://fonts.gstatic.com data: ; "
. "script-src 'self' 'sha256-4B8QbxkufkPFIEFoveWSoiyIpMLitEc/N9oopV9wrU4=' 'sha256-KoZvlNi6WIlva5SMPsgkZKuz3pwSCUhpugmi7saPqak=' ; "
. "style-src 'self' https://fonts.googleapis.com ; "
. "img-src 'self' http://1.gravatar.com ; ";
header($csp);
答案 0 :(得分:0)
使用CSP 3中的随机数,您可以将信任传播到由其他脚本加载的脚本,但我不相信脚本 nonce有任何方法可以传播到样式< / em>的
您需要做的是:
unsafe-inline
即可。显然不理想,但只要Javascript和其他活动内容被锁定,最好不要使用CSP。风格是比较危险的风格之一,但并不能真正对script-src
和object-src
的危险感到不满。哪种情况最好归结为你的情况。我首先尝试使用SHA哈希方法,然后确切地查看您需要多少哈希值。如果它们完全是在飞行中完成的,而且你已经有了几十个,那么它可能无法解决问题。
不幸的是,我的经验是大多数第三方库都不是用CSP制作的,很难或不可能使用它。它可能是某些东西,直到图书馆/ CDN /等预计会支持CSP,我们才会继续头痛。