目前将Content-Security-Policy与modernizr结合使用的最佳实践是什么?

时间:2018-07-12 07:58:01

标签: content-security-policy modernizr

我们希望使用Content-Security-Policy来保护我们的网站,即使设置为允许内联脚本(default-src 'self'; script-src 'self' 'unsafe-inline'),加载modernizr(2.6.2)也会产生4种违反CSP的行为:

enter image description here

我已升级到开发版本的最新版本(3.6.0),现在它会产生30多个违反CSP的行为:

enter image description here

我在modernizr网站上找不到关于CSP的任何正式声明,它仅提及2012年,他们添加了内容安全政策(https://modernizr.com/news/modernizr-262)的检测程序。 阅读各种博客和Stack Overflow问题,我发现2017年以来的最新最佳实践是:

  

如果modernizr正在注入所有内联的东西,那看起来就好像   您的选择是(a)添加所有这些哈希,(b)使用   “不安全的内联”(但基本上违背了   CSP…),或(c)不要使用modernizr。

尽管如此,即使使用unsafe-inline,我也会遇到错误。

是否有人找到同时使用Content-Security-Policy和modernizr的可行解决方案?

1 个答案:

答案 0 :(得分:0)

尝试使用宽大的CSP default-src * 'unsafe-eval' 'unsafe-inline' 'unsafe-dynamic' data: filesystem: about: blob: ws: wss:并开始删除关键字,直到开始出现错误为止,通过这种方法,您可以根据需要调整CSP。

如果有某种CSP生成器为您提供网站,并且它只知道您需要哪种CSP以免出错,那么这会很好。

请记住,*表示允许所有域,因此请将其替换为您打算支持的所有域。

这当然可以解决或解决问题,这取决于要解决的问题,您的网站提供哪些内容以及如果可以进行XSS攻击,用户将有多脆弱。 CSP仅能防止XSS攻击,而这仅仅是第三方可以插入的JavaScript,例如使用HTTPS,这将使MITM几乎不可能注入任意代码。