我试图通过设置 Content-Security-Policy 标头来减轻 XSS 攻击,但 Chrome 不断抛出错误:
拒绝执行内联事件处理程序,因为它违反了以下内容安全策略指令:“script-src 'self' 'nonce-Njg3MGUxNzkyMjViNDZkN2I3YTM3MDAzY2M0MjUxZGEzZmFhNDU0OGZjNDExMWU5OTVmMmMwMTg4OQ3ZmY.” 启用内联执行需要“unsafe-inline”关键字、散列(“sha256-...”)或随机数(“nonce-...”)。
我尝试设置 nonce,<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;
Run Code Online (Sandbox Code Playgroud)
我不喜欢设置script-srcas unsafe-inline,因为它使 Content-Security-Policy 无效
我正在努力使我的 CSP 政策尽可能严格。我需要在我的包中包含 3d 派对组件。但它使用了 element.setAttribute('style'...)破坏 CSP 的方法。有没有办法允许这个特定的脚本以这种方式内联样式?
内容安全策略的新手,因此不确定是否可以实现,但是想知道如何在HTML元素的属性内为某些内联脚本添加哈希或随机数。
例如:
<form method="post" onsubmit="function();">
Run Code Online (Sandbox Code Playgroud)
在谷歌浏览器中给我以下CSP错误:
拒绝执行内联事件处理程序,因为它违反了以下内容安全策略指令:“ script-src'self'。'unsafe-inline'关键字,哈希('sha256 -...')或随机数('必须启用nonce -...')才能启用内联执行。
我已经尝试过仅对脚本进行哈希处理,例如function();以及onsubmit="function"都不起作用。我尝试将一个随机数添加到form元素,但这没有帮助。
如果需要,我可以将事件绑定移到element属性之外,只是想知道是否有一种方法可以坚持上述要求。