首页 > 代码库 > 第二百七十四节,同源策略和跨域访问

第二百七十四节,同源策略和跨域访问

同源策略和跨域访问 

 

什么是同源策略

 尽管浏览器的安全措施多种多样,但是要想黑掉一个Web应用,只要在浏览器的多种安全措施中找到某种措施的一个漏洞或者绕过一种安全措施的方法即可。浏览器的各种保安措施之间都试图保持相互独立,但是攻击者只要能在出错的地方注入少许JavaScript,所有安全控制几乎全部瓦解——最后还起作用的就是最弱的安全防线:同源策略。同源策略管辖着所有保安措施,然而,由于浏览器及其插件,诸如Acrobat Reader、Flash 和Outlook Express漏洞频出,致使同源策略也频频告破。
  既然web应用的最弱安全防线是同源策略,那什么是同源策略呢?如何去攻破同源策略呢?如何黑web应用呢?
  同源策略,它是由Netscape提出的一个著名的安全策略。所有支持javascript的网站都会使用同源策略来保护自己的web应用。
  同源策略又名同域策略,通俗易懂的来说,同源就是(主机名+协议+端口号【若存在】)三者相同。也就是说javascript只可以操作自己域下的东西,不能操作其他域下的东西。比如百度下javascript是不可操作谷歌下的页面。

  那为什么要同源策略呢?
  如上述所述,同源策略,javascript操作自己web应用,不得操作别人web应用。既然如此,也就是别人无法操作自己web应用,是保证web安全的一种方式。
  假设别人可以操作自己web应用,试想是否很可怕?假如你打开网银页面,蹦出一个恶意广告,当你关闭广告,若没有同源策略,是不是代表恶意广告会操作你网银页面,通过javascript窃取你网银的信息。
  那了解了同源策略,下面举几个url判断是否在同一个域中。
  假设url地址:http://store.company.com/dir/page.html检测下面是否他的同源地址。
  其url的协议:http;主机名:store.company.com 端口号没有或者其相应服务器的默认值


URL 结果 原因
http://store.company.com/dir2/other.html
http://store.company.com/dir/inner/another.html
https://store.company.com/secure.html 不是 协议不相同
http://store.company.com:81/dir/etc.html 不是 端口号不相同
http://news.company.com/dir/other.html 不是 主机名不相同

 
  任何事物都是相对的,既然存在同源策略,肯定会存在访问不同源的情况。那该怎么办呢?
  上文也提到,同源即同域,不同源,即跨域。
  那我若想跨域,怎么办呢?

第二百七十四节,同源策略和跨域访问