3

同源策略(SOP)经常与跨站脚本(XSS)一起被提及。但似乎在有 SOP 的世界里,XSS 仍然时有发生。所以我一直不清楚同源策略到底能防止什么样的攻击?换句话说,想象一个没有 SOP 的世界,与有 SOP 的现实世界相比,恶意攻击者可以获得什么其他权力?

我在这个网站(http://security.stackexchange.com/questions/8264/why-is-the-same-origin-policy-so-important)上读到“假设您已登录 Facebook 并在另一个浏览器选项卡。如果没有相同的源策略,该网站上的 JavaScript 可以对您的 Facebook 帐户执行您被允许执行的任何操作。”。这实际上让我更加困惑,因为我从未听说过一个选项卡中的网页有任何机制来操纵其他选项卡,即使来自同一个域也是如此。这里 (http://javascript.info/tutorial/same-origin-security-policy) 还提到(更明确地)SOP 阻止脚本在一个窗口中操作另一个窗口中的 DOM 元素。但我真的无法将示例与所解释的内容联系起来(window 在这里是什么意思?似乎该示例正在谈论 iframe)。

总而言之,谁能给出一些具体的例子来说明如果没有 SOP 会发生什么?

另外,我很好奇一个窗口中的脚本如何在另一个窗口中操作 DOM 元素,假设这两个窗口来自同一个域。但这不是这个问题的主要课程

谢谢!

4

2 回答 2

2

我从未听说过在一个选项卡中操作其他选项卡的网页的任何机制 [...] 似乎该示例正在谈论 iframe

iframe是获取跨窗口脚本的最简单但不是唯一的方法。另一种方法是让攻击者页面从一个新选项卡进入window.open一个文档。facebook.com因为open返回选项卡window对象的句柄,所以一个选项卡中的脚本可以与另一个选项卡中的内容进行交互。

如果没有 SOP,该脚本可以代表您填写并提交该选项卡中的表格。

XSS 仍然不时发生。所以我一直不清楚同源策略到底能防止什么样的攻击?

没有 SOP,每个网页都容易受到 XSS 的攻击,没有人是安全的。

使用 SOP,除非作者犯了错误,否则网页对 XSS 是安全的。XSS 仍然不时发生,因为不幸的是,网站作者确实犯了错误。

于 2012-08-16T09:05:45.673 回答
0

一个例子:对于恶意网页,可能会向用户已经在用户上下文中登录的其他网页发出一些 javascript ajax 请求。此其他页面将假定请求来自授权用户。例如,如果只有用户登录到 Facebook 或他的银行,malicius 脚本可以对 Facebook 进行一些 ajax 调用并发布新状态或银行交易服务并进行转账。人们通常会同时在浏览器选项卡中打开多个页面,因此浏览恶意网页的人很可能同时登录到某些可能被黑客入侵的敏感服务。

于 2012-08-16T06:52:51.910 回答