我熟悉持久性和非持久性XSS。 我也知道Same origin policy阻止/限制源自一个网站页面的请求转到另一个网站服务器。这使我认为相同的原始策略至少可以阻止非持久性类型的XSS攻击(因为在持久性攻击类型中,恶意代码来源与被盗的私有信息相同)。 我的理解是否正确? SOP可以用来阻止/减少这些攻击吗?
编辑:好的,我在浏览器端调用2个脚本之间的方法和在另一个网站上调用HTTP POST等方法时感到困惑。谢谢你的答案jakber。现在我有另一个问题,SOP是否能阻止Cross-site request forgery? 维基百科中给出的示例讨论了Bob在聊天论坛上访问由Mallory创建的恶意图像标记。但是,根据SOP规则,恶意脚本不应该能够访问银行的cookie。我在这里错过了什么吗?
答案 0 :(得分:8)
通常没有。
非持久性或反射式XSS攻击会利用作为页面内容回送的输入,而不进行适当的清理,而不会持久化。在两种情况下,注入的脚本似乎都来自被利用的域。
例如,如果您在PHP中执行此操作:echo $_GET['param']
并将页面链接发送给包含的人
?param=<script>alert('got you!');</script>
它是一种非持续性的XSS攻击,同源策略与它无关。
Same-origin意味着您无法直接注入脚本或修改其他域上的DOM:这就是您需要首先找到XSS漏洞的原因。
答案 1 :(得分:0)
SOP通常无法阻止XSS或CSRF。
对于XSS,jakber的回答已经提供了一个很好的解释。我只想补充说,将此漏洞称为“跨站点”的原因是因为攻击者可以将代码(例如<script src="...">
)注入到目标页面中,该目标页面从另一个网站加载恶意javascript,该网站通常由攻击者。 SOP不会拒绝从其他网站加载Javascript,因为这样做会破坏网络。
对于CSRF,SOP无法阻止大多数情况,因为SOP不会阻止网站A向网站B发送GET和POST请求。