虽然各种浏览器安全措施,但为了黑了Web申请书。洞或者绕过一种安全措施的方法就可以。浏览器的各种保安措施之间都试图保持相互独立,可是攻击者仅仅要能在出错的地方注入少许JavaScript,全部安全控制差点儿全部瓦解——最后还起作用的就是最弱的安全防线:同源策略。同源策略管辖着全部保安措施。然而,因为浏览器及其插件,诸如Acrobat
Reader、Flash 和Outlook Express漏洞频出。致使同源策略也频频告破。
既然web应用的最弱安全防线是同源策略,那什么是同源策略呢?怎样去攻破同源策略呢?怎样黑web应用呢?
同源策略,它是由Netscape提出的一个著名的安全策略。全部支持javascript的站点都会使用同源策略来保护自己的web应用。
同源策略又名同域策略,通俗易懂的来说,同源就是(主机名+协议+port号【若存在】)三者同样。也就是说javascript仅仅能够操作自己域下的东西,不能操作其它域下的东西。比方百度下javascript是不可操作谷歌下的页面。
那为什么要同源策略呢?
如上述所述,同源策略,javascript操作自己web应用。不得操作别人web应用。既然如此,也就是别人无法操作自己web应用,是保证web安全的一种方式。
如果别人能够操作自己web应用,试想是否非常可怕?假如你打开网银页面,蹦出一个恶意广告。当你关闭广告,若没有同源策略,是不是代表恶意广告会操作你网银页面,通过javascript窃取你网银的信息。
那了解了同源策略,以下举几个url推断是否在同一个域中。
如果url地址:http://store.company.com/dir/page.html检測以下是否他的同源地址。
其url的协议:http。主机名:store.company.com port号没有或者其对应server的默认值
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 | 不是 | port号不同样 |
http://news.company.com/dir/other.html | 不是 | 主机名不同样 |
同源策略概念已经解释。至于黑web应用,这个我能力尚浅,呵呵两字飘过~
不论什么事物都是相对的,既然存在同源策略,肯定会存在訪问不同源的情况。
那该怎么办呢?
上文也提到,同源即同域。不同源。即跨域。
那我若想跨域。怎么办呢?
眼下ajax一般做法是不支持跨域的,可是随着跨域的需求呼声越来越强烈,眼下跨域基本经常使用实现方式有两种JSONP和CORS方式。
当中link、img能够跨域訪问,比方程序中img链接到百度图片,可是浏览器会阻止javascript读写操作的。
当你跨域訪问时。会提演示样例如以下:
FireFox29:
已阻止交叉源请求:同源策略不同意读取 http://localhost:8089/crcp/rcp/t99eidt/testcors.do 上的远程资源。能够将资源移动到同样的域名上或者启用 CORS 来解决问题。
IE11:
SCRIPT7002: XMLHttpRequest: 网络错误 0x2efd, 因为出现错误 00002efd 而导致此项操作无法完毕。
下篇博客介绍跨域两种解决方式的原理以及详细实施代码。
版权声明:本文博主原创文章。博客,未经同意不得转载。