同源策略(SOP)经常与Cross Site Scripting(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元素。但是我真的无法将这个例子与所解释的内容联系起来(这里的窗口是什么意思?似乎这个例子讨论的是iframe)。
总而言之,如果没有SOP,任何人都可以提供一些具体的例子吗?
另外,我很好奇一个窗口中的脚本如何操作另一个窗口中的DOM元素,假设两个窗口来自同一个域。但这不是这个问题的主要过程
谢谢!
答案 0 :(得分:2)
我从来没有在一个标签中听说过任何网页机制来操纵其他标签[...]似乎这个例子正在谈论iframe
iframe
是获取跨窗口脚本的最简单但不是唯一的方法。另一种方法是让攻击者页面window.open
将facebook.com
文档转换为新标签。由于open
会返回标签的window
对象的句柄,因此一个标签中的脚本可能会与另一个标签中的内容进行交互。
如果没有SOP,该脚本可以代表您填写并在该标签中提交表单。
XSS仍然不时发生。所以我从来都不清楚同源策略会阻止什么类型的攻击?
如果没有SOP,每个网页都容易受到XSS攻击,没有人能够安全。
使用SOP,网页对XSS 是安全的,除非他们的作者犯了错误。 XSS仍然不时发生,因为不幸的是,网站作者会犯错误。
答案 1 :(得分:0)
一个例子:对于恶意网页,可以向用户已经登录用户上下文的其他网页发出一些javascript ajax请求。该另一页假设该请求来自授权用户。 例如,如果只有用户登录到Facebook或他的银行,applesius脚本可以对Facebook进行一些ajax调用并发布新状态或银行交易服务并进行转移。人们通常会同时在浏览器标签页中打开许多页面,因此浏览恶意网页的人很可能会同时登录某些可能被黑客入侵的敏感服务。