首页 > 解决方案 > 使用 nonce 或 sha-256 是否允许执行内联事件处理程序?

问题描述

我对内容安全策略有点怀疑...我的渲染文件 pug 包含内联事件处理程序,例如onclick='someFunction()'...在我安装了用于添加额外标头的头盔后,它阻止了我的内联事件处理程序以违反 csp ..经过一些研究我来了要知道要允许内联脚本,我们必须使用 unsafe-inline、nonce 或 hash..所以我将 nonce 放在 pug 文件中的脚本标签中,例如script(src="source", nonce='123456')在头盔中间件中将 content-security-policies script-src 设置为' nonce-123456'..但我仍然无法执行内联事件处理程序..我的问题是使用 nonce 或 sha-256 只允许像这样的 linline 脚本<script nonce='123456'> someFunction() </script>工作还是允许内联脚本和内联事件处理程序执行??..我知道我可以使用 addEventListener() 来代替内联事件处理程序..但是有什么方法可以使用内联事件处理程序?

标签: expresscontent-security-policyhelmet.js

解决方案


它只允许执行脚本元素。

属性将onclick是不同的来源。

‘unsafe-inline'将允许内联事件处理程序属性,但极易受到 XSS 的攻击,而无法使用 nonce 进行缓解。

使用addEventListener.


推荐阅读