Google Chrome XSS Auditor中存在一个已知的false positive,其中涉及带有一些js-ish文本的textarea,例如action=""
:
XSS Auditor拒绝在' https://www.dokuwiki.org/sandbox:chrome_xss_auditor?do=edit'中执行脚本。因为它的源代码是在请求中找到的。审核员已启用,因为服务器未发送“X-XSS-Protection”和“X-XSS-Protection”。也没有'内容 - 安全 - 政策'报头中。
错误消息表明可以使用X-XSS-Protection
- 标头或Content-Security-Policy
标头解析。确实a related question on SO建议使用header("X-XSS-Protection: 0");
停用XSS-Protection。
但是我对简单地停用XSS-Protection并尝试使用Content-Security-Policy
- 标题处理此问题感到有些不安:
header('Content-Security-Policy: script-src * \'unsafe-inline\' \'unsafe-eval\'');
但不幸的是,这并没有影响到这个问题。
我的问题是:为什么它会失败?如何在不完全停用XSS-Protection的情况下使用Content-Security-Policy
- 标头处理问题?
答案 0 :(得分:0)
为什么它失败了,我如何使用Content-Security-Policy-header 处理问题而不完全停用XSS-Protection?
它没有用,因为你允许unsafe-inline
。
明确允许不安全的内联比通过X-XSS-Protection
禁用XSS保护更糟糕,因为存储的XSS攻击可能与前者相比(与锁定的CSP相比),而后者对它们没有影响。
变通方法 - 根据链接的帖子,禁止unsafe
指令或完全禁用XSS保护来实施安全的CSP。
前者是更理想的选项,但您可能需要重新设计您的网页或网站,具体取决于您是否使用了内联JavaScript。如果将所有JS移动到外部文件,这将使这成为可能,因此您将拥有一个更安全的系统。