资讯专栏INFORMATION COLUMN

web安全一,同源策略与跨域

cgspine / 2493人阅读

摘要:可以说同源策略在安全中扮演着及其重要的角色。我把这个领域的东西写成了一个系列,以后还会继续完善下去安全一同源策略与跨域安全二攻击安全三攻击

之所以要将同源策略与跨域写在一起,是因为存在浏览器的同源策略,才会存在跨域问题
何为同源策略
同源策略是浏览器实现的一种安全策略,它限制了不同源之间的文档和脚本交互的权限。只有同一个源的脚本才会具有操作dom、读写cookie、session 、ajax等敏感操作的权限。可以说同源策略在web安全中扮演着及其重要的角色。所谓同源简单来说即是两个页面必须具有相同的协议、端口还有域名。 

http://www.site.com/index.html为例,举个小栗子:

url 是否跨域 原因
http://www.site.com/other/ind...
http://child.site.com/index.html origin 不一样(www与child)
http://www.site.com:8090/index.html 端口 不一样(80与8090)
https://www.site.com/index.html 协议 不一样(http与https)
IE是个例外

不得不调侃一下,在兼容性方面IE似乎永远都难以跟上别的浏览器发展的步伐,永远都是一个例外。

授信范围(Trust Zones):两个相互之间高度互信的域名,如公司域名(corporate domains),不遵守同源策略的限制。

端口:IE未将端口号加入到同源策略的组成部分之中,因此 http://www.size.com:81/index.html 和http://www.size.com:8090/index.html 属于同源并且不受任何限制。

虽然同源策略限制了跨域文档脚本的操作能力,但明确允许部分资源性的标签是可以加载跨域资源的,如, 标签嵌入跨域脚本。语法错误信息只能在同源脚本中捕捉到。

标签嵌入CSS。由于CSS的松散的语法规则,CSS的跨域需要一个设置正确的Content-Type消息头。

嵌入图片。

, 的插件。

@font-face引入的字体。