http://en.wikipedia.org/wiki/Same_origin_policy
相同的源策略可防止一个站点的脚本与另一个站点通信。维基说这是一个“重要的安全概念”,但我不清楚它会阻止什么威胁。
我知道来自一个网站的Cookie不应该与另一个网站共享,但可以(并且是)单独执行。
CORS标准http://en.wikipedia.org/wiki/Cross-Origin_Resource_Sharing提供了绕过相同原始政策的合法系统。据推测,它不允许同一起源政策旨在阻止任何威胁。
看看CORS我更不清楚谁会受到保护。 CORS由浏览器强制执行,因此它不会保护任何站点免受浏览器的攻击。这些限制是由脚本想要与之交谈的网站决定的,因此它似乎无法保护用户免受任何网站的攻击。</ p>
那么原因政策是什么?
答案 0 :(得分:6)
文章@EricLaw提到,“Same Origin Policy Part 1: No Peeking”很好。
这是一个简单的例子,说明为什么我们需要'相同的原产地政策':
可以使用iframe在“您自己的网页”中显示其他网页(“内嵌框架”会在框架中放置另一个HTML文档)。假设您显示www.yourbank.com。用户输入他们的银行信息。如果您可以阅读该页面的内部HTML(需要使用脚本),您可以轻松阅读银行帐户信息,并繁荣发展。安全漏洞。
因此,我们需要相同的原始政策,以确保一个网页无法使用脚本来阅读其他网页的信息。
答案 1 :(得分:1)
例如,它可以防止Farmville检查您的银行账户余额。或者,更糟糕的是,弄乱你要发送的表格(输入PIN / TAN后),这样他们就能得到所有的钱。
CORS主要是网站的标准,确保它们不需要这种保护。它基本上说“任何网站的脚本都可以与我交谈,没有任何安全措施可能被破坏”。所以它确实允许SOP禁止的事情,在不需要保护的地方和跨域网站是有益的。想想网状物。
答案 2 :(得分:1)
相同原始策略的目的是避免恶意站点M
使用{的用户权限(即授权cookie)从可信站点A
读取信息的威胁{1}} 的。它是一种浏览器策略,而不是服务器策略或HTTP标准,旨在降低联系网站A
时来自网站A
的其他浏览器策略发送Cookie的风险。
请注意,没有任何内容可以阻止A
在浏览器之外访问M
。它可以发送任意数量的请求。但它不会在A
的未知用户的权限下这样做,这可能会在浏览器中发生。
另请注意,该政策会阻止来自A
的读取的M
页面。它不保护A
服务器免受请求的影响。特别是,浏览器将允许跨域A
- Cookie和全部从POSTS
到M
。这种威胁称为Cross-Site Request Forgery;它不会被同源策略所缓解,因此服务器保护自己不受此限制。