跨站点脚本攻击和相同的原始策略

时间:2011-08-10 14:29:02

标签: xss same-origin-policy

我熟悉持久性和非持久性XSS。 我也知道Same origin policy阻止/限制源自一个网站页面的请求转到另一个网站服务器。这使我认为相同的原始策略至少可以阻止非持久性类型的XSS攻击(因为在持久性攻击类型中,恶意代码来源与被盗的私有信息相同)。 我的理解是否正确? SOP可以用来阻止/减少这些攻击吗?

编辑:好的,我在浏览器端调用2个脚本之间的方法和在另一个网站上调用HTTP POST等方法时感到困惑。谢谢你的答案jakber。

现在我有另一个问题,SOP是否能阻止Cross-site request forgery? 维基百科中给出的示例讨论了Bob在聊天论坛上访问由Mallory创建的恶意图像标记。但是,根据SOP规则,恶意脚本不应该能够访问银行的cookie。我在这里错过了什么吗?

2 个答案:

答案 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请求。