浏览器的同源策略

同源策略限制了从同一个源加载的文档或脚本如何与来自另一个源的资源进行交互。这是浏览器用于隔离潜在恶意文件的一个重要安全机制。

简单讲:浏览器限制来自不同地方的资源的信息共享,最大限度的防止出现恶意行为。

源的定义

如果两个页面的协议,端口(如果有指定)和域名都相同,则两个页面具有相同的源。
只要有一个不一致,都被认为是非同源。

下表给出了相对http://store.company.com/dir/page.html同源检测的示例:

URL 结果 原因
http://store.company.com/dir2/other.html 成功
http://store.company.com/dir/inner/another.html 成功
https://store.company.com/secure.html 失败 不同协议 ( https和http )
http://store.company.com:81/dir/etc.html 失败 不同端口 ( 81和80)
http://news.company.com/dir/other.html 失败 不同域名 ( news和store )

限制网络访问

同源策略会限制网络访问。

同源策略下只允许到不同源发送Post和Get请求,不允许发送Put和Delete请求。也不允许向不同的源发送自定义header,向自己的源发送自定义header是允许的。

但是,并不是完全这样。<script>标签访问的目标源的文件没有做限制,JSONP即是基于此而实现的。为了提高安全性,浏览器需要读取Access-Control-Allow-Origin:*,来确定源是否安全。

对浏览器存储的限制

存储在浏览器中的数据,如localStorageIndexedDB,以源进行分割。每个源都拥有自己单独的存储空间,一个源中的Javascript脚本不能对属于其它源的数据进行读写操作。

Cookies 使用不同的源定义方式。一个页面可以为本域和任何父域设置cookie,只要是父域不是公共后缀(public suffix)即可。Firefox 和 Chrome 使用 Public Suffix List 决定一个域是否是一个公共后缀(public suffix)。Internet Explorer使用其自己的内部方法来确定域是否是公共后缀。不管使用哪个协议(HTTP/HTTPS)或端口号,浏览器都允许给定的域以及其任何子域名(sub-domains) 访问 cookie。设置 cookie 时,你可以使用Domain,Path,Secure,和Http-Only标记来限定其访问性。读取 cookie 时,不会知晓它的出处。 即使您仅使用安全的https连接,您看到的任何cookie都可能使用不安全的连接进行设置。

参考

浏览器同源策略
Same Origin Policy

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 浏览器的同源策略 同源策略限制从一个源加载的文档或脚本如何与来自另一个源的资源进行交互。这是一个用于隔离潜在恶意文...
    耦耦阅读 1,768评论 0 0
  • 一、同源策略 同源策略是一种约定,是浏览器最核心也最基本的安全功能,主要体现在同源策略会限制来自不同源的文档和脚本...
    CAaRrLl阅读 10,209评论 0 3
  • 一、概述 1.1 含义 1995年,同源政策由 Netscape 公司引入浏览器。目前,所有浏览器都实行这个政策。...
    会飞的贼er阅读 3,218评论 0 2
  • 浏览器的同源策略 浏览器安全的基石是"同源政策"(same-origin policy) 一、概述 A网页设置的 ...
    李华炎阅读 3,421评论 0 0
  • 第十五章的主要内容是 App 应用的一些收尾工作,比如打包,上架之类的事情。 一、生成正式签名的 APK 文件  ...
    radish520like阅读 3,414评论 0 0