如何通过内容安全政策解决Chrome的XSS审核员误报问题?

时间:2015-10-29 16:59:35

标签: google-chrome http-headers xss content-security-policy

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 - 标头处理问题?

PS:供参考,另见https://github.com/splitbrain/dokuwiki/issues/1182

1 个答案:

答案 0 :(得分:0)

  

为什么它失败了,我如何使用Content-Security-Policy-header   处理问题而不完全停用XSS-Protection?

它没有用,因为你允许unsafe-inline

明确允许不安全的内联比通过X-XSS-Protection禁用XSS保护更糟糕,因为存储的XSS攻击可能与前者相比(与锁定的CSP相比),而后者对它们没有影响。

变通方法 - 根据链接的帖子,禁止unsafe指令或完全禁用XSS保护来实施安全的CSP。

前者是更理想的选项,但您可能需要重新设计您的网页或网站,具体取决于您是否使用了内联JavaScript。如果将所有JS移动到外部文件,这将使这成为可能,因此您将拥有一个更安全的系统。