同源政策适用于什么

时间:2015-08-17 03:15:40

标签: javascript same-origin-policy

我无法理解为什么我们需要这条规则。如果它是如此重要,为什么我们可以得到这么多的解决方法来解决它?像JSONP,CORS等?

有没有任何例子可以在没有这条规则的情况下证明损害?

2 个答案:

答案 0 :(得分:2)

如果查看MDN article,您会看到:

  

通常允许跨源写入。示例是链接,重定向和表单提交。某些很少使用的HTTP请求需要预检。

     

通常允许跨源嵌入。示例如下所列。

     

通常不允许跨源读取,但读取访问通常会通过嵌入泄漏。例如,您可以读取嵌入图像的宽度和高度,嵌入式脚本的操作或嵌入式资源的可用性。

这是一个很好的post on security StackExchange

  

假设您已登录Facebook并在另一个浏览器标签中访问恶意网站。如果没有相同的原始政策,该网站上的JavaScript可以对您允许的Facebook帐户执行任何操作。例如,在提交表单之前输入密码后,阅读私人消息,发布状态更新,分析HTML DOM树。

关于为什么存在CORS,JSONP等的问题(即,绕过同源政策的方法):这允许域指定其他来源访问其API的方式(阅读内容等)例如,CORS允许服务器指定允许从服务器读取的安全域的白名单。

答案 1 :(得分:0)

跨域安全性可防止一个网站窃取您登录的其他网站的信息。

例如,如果我创建一个网站并构建您定期登录的gmail网站,并且允许我的网页到达gmail框架并在gmail网页中阅读所有电子邮件,那么我可以很容易地窃取你的大量信息。将其扩展到您的银行网站,您的PayPal网站等...所有,我必须做的就是让您在遇到其他易受攻击的人之一时来到我的恶意网站站点。跨域安全性可防止此类跨站点访问,因此不受信任的Web站点无法从同一浏览器中的其他Web页面任意窃取信息。

访问其他网站的网页"在浏览器中的特定危险"是浏览器中的网页可以访问该网站的所有登录cookie,因此它通常会显示通常不会通过任何公共接口向公众提供的数据,而无需具有合法的登录凭据。这就是为什么浏览器中显示的网页必须受到保护。

"解决方案"例如JSONP或CORS都需要来自主机站点的合作,因此只有当主机站点感觉它们允许通过这些机制使用的接口是安全和适当的时才能使用它们。你不能采用常规接口,作为客户端,只需通过JSONP或CORS使用它 - 它不会起作用。这两种机制都要求服务器专门启用跨源访问机制。