内容安全策略“拒绝执行内联事件处理程序”错误

问题描述 投票:1回答:1

我正在尝试通过设置Content-Security-Policy标头来缓解XSS攻击,但Chrome会不断抛出错误:

拒绝执行内联事件处理程序,因为它违反了以下内容安全策略指令:“ script-src'self''nonce-Njg3MGUxNzkyMjViNDZkN2I3YTM3MDAzY2M0MjUxZGEzZmFhNDU0OGZjNDExMWU5OTVmMmMWQ4 =”。要启用内联执行,需要使用'unsafe-inline'关键字,哈希('sha256 -...')或随机数('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;

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

javascript http-headers content-security-policy
1个回答
2
投票
内联事件处理程序是不好的做法(主要是因为它们是内联的)。有关详细信息,请参见this answer

虽然是does not seem to work with inline event handlers。因此,最好的办法是用您的JS文件中编写的适当事件处理程序替换该事件处理程序。如果您不能这样做,请尝试将'unsafe-hashes'添加到script-src

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

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