javascript - 内容安全策略 “Refused to execute inline event handler” 错误

标签 javascript http-headers content-security-policy

我试图通过设置 Content-Security-Policy header 来缓解 XSS 攻击,但 Chrome 不断抛出错误:

Refused to execute inline event handler because it violates the following Content Security Policy directive: "script-src 'self' 'nonce-Njg3MGUxNzkyMjViNDZkN2I3YTM3MDAzY2M0MjUxZGEzZmFhNDU0OGZjNDExMWU5OTVmMmMwMTg4NTA3ZmY4OQ=='". Either the 'unsafe-inline' keyword, a hash ('sha256-...'), or a nonce ('nonce-...') is required to enable inline execution.



我尝试在 <script nonce="Njg3MGUxNzkyMjViNDZkN2I3YTM3MDAzY2M0MjUxZGEzZmFhNDU0OGZjNDExMWU5OTVmMmMwMTg4NTA3ZmY4OQ==" href="main.js"></script> 中设置随机数但它不起作用。

这是我的Content-Security-Policy标题:
default-src 'none'; 
script-src 'self' 'nonce-NjJjN2E5YjA0ZDJhNDlhZjlhMDFmZjQzMjE4YzhmMTAzOWNjZjVjMGZjNDIxMWU5YWIyNGMwMTg4NTA3ZmY4OQ=='; 
connect-src 'self' https://vimeo.com; 
img-src 'self'; 
style-src 'self' 'unsafe-inline' https://fonts.googleapis.com; 
font-src 'self' https://fonts.gstatic.com; 
media-src 'self' http://player.vimeo.com; 
frame-src 'self' http://player.vimeo.com;

我不喜欢设置 script-srcunsafe-inline ,因为它使 Content-Security-Policy 的使用无效

最佳答案

您的 CSP 阻止了 HTML 代码中的内联事件处理程序,例如 <button onclick="myFunction()">Click me</button> .

内联事件处理程序是不好的做法(主要是因为它们是内联的)。
this answer洞察力。

随机数 does not seem to work with inline event handlers尽管。所以最好的办法是用写在你的 JS 文件中的适当的事件处理程序替换这个事件处理程序。
如果您不能这样做,请尝试添加 'unsafe-hashes'给您的script-src .

感谢拒绝 'unsafe-inline' ,这是我们经常看到的捷径,包括在生产中。

关于javascript - 内容安全策略 “Refused to execute inline event handler” 错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58652892/

相关文章:

apache - 使用 Apache 2.4 生成随机数(用于内容安全策略 header )

javascript - ASP.NET MVC3 : Why are my custom validation attributes never working?

javascript - 重复变量会导致内存泄漏吗?

javascript - 检测真实屏幕分辨率(忽略浏览器缩放等)

python - Angular $http 正在发送 OPTIONS 而不是 PUT(不是 POST)

internet-explorer - 坚持IE兼容模式

http - 在 cpp-netlib 中添加 Access-Control-Allow-Origin 选项

jQuery-1.11.3 违反了 CSP eval 政策。有修复或解决方法吗?

javascript - 用于 blob 的 Chrome 45 CSP child-src

javascript - 异步循环中的 Node.js Api 调用