使用nonce或sha-256是否允许执行内联事件处理程序?

问题描述 投票:0回答:2

我对内容安全策略有一点疑问...我的渲染文件 pug 由内联事件处理程序组成,如

onclick='someFunction()'
...在我安装头盔以添加额外标头后,它会阻止我的内联事件处理程序违反 csp ..之后经过一些研究,我发现,为了允许内联脚本,我们必须使用 unasafe-inline、nonce 或 hash。所以我将 nonce 放入 pug 文件中的脚本标签中,如
script(src="source", nonce='123456')
并在头盔中间件中设置内容安全-policies script-src to 'nonce-123456'..但我仍然无法执行内联事件处理程序..我的问题是使用nonce或sha-256只允许像
<script nonce='123456'> someFunction() </script>
这样的内联脚本工作,或者它将允许两个内联脚本和要执行的内联事件处理程序??..我知道我可以使用 addEventListener() 而不是内联事件处理程序..但是有什么方法可以使用内联事件处理程序??

express content-security-policy helmet.js
2个回答
1
投票

它只允许执行脚本元素。

onclick
属性将是不同的来源。

‘unsafe-inline'
将允许内联事件处理程序属性,但很容易受到 XSS 的攻击,并且无法使用随机数来缓解。

使用

addEventListener


0
投票

使用内容安全策略 (CSP) 时,您可以将

nonce
属性与
addEventListener
结合使用来创建安全事件处理程序。这允许您执行内联脚本,同时保持强大的安全状态。

有关说明性示例,您可以访问以下链接:https://csplite.com/csp155/

© www.soinside.com 2019 - 2024. All rights reserved.