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