我们希望使用Content-Security-Policy来保护我们的网站,即使设置为允许内联脚本(default-src 'self'; script-src 'self' 'unsafe-inline'
),加载modernizr(2.6.2)也会产生4种违反CSP的行为:
我已升级到开发版本的最新版本(3.6.0),现在它会产生30多个违反CSP的行为:
我在modernizr网站上找不到关于CSP的任何正式声明,它仅提及2012年,他们添加了内容安全政策(https://modernizr.com/news/modernizr-262)的检测程序。 阅读各种博客和Stack Overflow问题,我发现2017年以来的最新最佳实践是:
如果modernizr正在注入所有内联的东西,那看起来就好像 您的选择是(a)添加所有这些哈希,(b)使用 “不安全的内联”(但基本上违背了 CSP…),或(c)不要使用modernizr。
尽管如此,即使使用unsafe-inline
,我也会遇到错误。
是否有人找到同时使用Content-Security-Policy和modernizr的可行解决方案?
答案 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几乎不可能注入任意代码。