我正在使用https://csp-evaluator.withgoogle.com/评估CSP策略。该策略配置如下:
default-src 'self';object-src 'self';script-src 'self' 'unsafe-inline' 'unsafe-eval';script-src-elem 'self' 'unsafe-inline' 'unsafe-eval';script-src-attr 'self' 'unsafe-inline';为什么只有'unsafe-inline' of 'script-src'被报道为高严重程度的发现?据我所知,'script-src-elem' 'unsafe-inline'也可能是危险的。我遗漏了什么?
发布于 2020-12-29 10:55:27
我不认为你遗漏了什么,这似乎是谷歌CSP评估器中的一个错误。
script-src-elem 使用的是以控制script标记的来源(内联或外部;也请参见等级库)。你可以亲自测试一下(如用:
<?php
header("content-security-policy: script-src 'self'; script-src-elem 'self' 'unsafe-inline'")
?>
<script>alert(1);</script>从Chrome的角度来看,有效负载将启动(火狐不支持script-src-elem)。如果删除unsafe-inline,CSP将阻止脚本。
因此,我们可以看到,script-src-elem 'unsafe-inline'确实是危险的。
发布于 2021-01-02 08:24:27
为什么只有'script-src‘的’不安全-内联‘被报告为高严重性的发现?据我所知,'script-src-elem‘’不安全-内联‘可能是危险的。
这不是一个错误,谷歌是故意这么做的。
i)。“不安全-内联”有三个攻击矢量:
<script></script><a href='javascript: ...'>和<iframe src='javascript: ...'>这样的javascript导航<tag onClick='javascript here'>等标记中的内联事件处理程序规则script-src-elem 'unsafe-inline'确实比script-src 'unsafe-inline'安全,因为它将攻击向量的数量从3减少到1。此外,带有<script></script>插入的“经典”XSS是罕见的,网站管理员不再犯这种幼稚的错误。
最常见的XSS是引号转义不足,并使用onclick='...'属性注入标记,而script-src-elem 'unsafe-inline'不受这些属性的限制。
II)。如果你对csp-evaluator.withgoogle.com做一点研究,你就会意识到这更像是一个教育玩具,而不是对CSP安全性的一个真正的测试。Google评估人员只是对熟悉的单词或它们的缺席做出反应,它不执行CSP规则的检查。例如,script-src 'unsafe-inline'; sandbox;将在脚本中触发“高严重性查找”,尽管sandbox ;规则完全不允许所有脚本。
csp-evaluator.withgoogle.com这更像是一个“政治”动作,而不是真正的漏洞检查器。谷歌只是教育网站管理员注意一些常见的错误,并试图在潜意识层面巩固Chrome比其他浏览器更安全的观点。
PS:script-src-elem 'self' 'unsafe-inline' 'unsafe-eval'规则是错误的,'unsafe-eval' 不支持在script-src-elem指令中。但csp-evaluator对此保持沉默。
https://security.stackexchange.com/questions/242674
复制相似问题