而还有一个需要注意的是,源的判断中使用的是完整的主机名。之所以要这么做也是出于安全考量。考虑这样一个情形:一些国外的免费空间提供商,它们提供空间和免费的二级域名,各个三级域名对应空间的所有人其实是不一样的,因此,如果按照一级域名来判断,会导致各二级域名之间可以互相访问从而干扰数据。
3.1 同源准则
在计算机中,同源准则是web应用安全模型的一个重要概念。这个准则可以组织一个页面上的恶意代码访问另一个页面的敏感内容。在这个准则下,仅当页面A和页面B有同样的源时浏览器才允许页面A内容访问页面B。这个准则为当今依靠HTTP Cookies来获取用户会话认证的现代浏览器及相关程序提供了显著保护。由不同的源提供的内容在客户端被阻止互相访问,借此,源可以自认为自己的信息在用户侧是受保护的。
http://www.example.org:8080/a.html同源判定结果
URL
结果
解释
http://www.example.org/b.html
同源
<协议,主机名,端口号>全部一致
http://ww2.example.org/a.html
不同源
<协议,端口号>全部一致,主机名不一致
http://www.example.org:8080/a.html
不同源
<协议,主机名>全部一致,端口号不一致
https://www.example.org/a.html
不同源
<主机名>全部一致,协议和端口号不一致
3.2 源的特殊处理
由于about:blank、JAVAscript:和data:伪协议并未指定任何与源相关的信息,在浏览器加载他们时,它们继承了加载他的文档的源。因此,当页面A打开about:blank时,由于源的继承,因此页面A可以修改about:blank窗口的内容。这个特殊情况导致了一些漏洞的发生。
在处理同源策略的问题上,大部分浏览器都是遵守规范的,但是由于历史原因,仅在IE中有下面两个特殊的情形:
(1) 位于可信域的互信的域名间,不遵守同源策略的限制;
(2) IE在判断同源不考虑端口,因此http://www.example.org:80和http://www.example.org:81在IE中不受同源策略限制。
浏览器在访问目标时就会确定源,不过脚本也可以通过设置document.domain来修改自己的源,这可以为一些需要在不同子域之间传递信息的JavaScript带来方便,但是修改也仅限于修改当前域,这只能说是一个稍微宽松一点的同源判定方法。
例如,http://www.example.org/a.html的脚本可以执行document.domain=” example.org”来修改自己的domain,执行了这个动作后,较短的域会作为同源检测的依据,因此,修改之后页面就可以成功访问http:// example.org/b.html了,为了维护SOP权威,example.org脚本并不能通过document.domain将自己的domain设置为example2.org。
设置document.domain时,如果不指定端口号,则会以null覆盖原先的端口号,所以如果要确保在修改源之后端口号判断正常,在设置document.domain时需要带上新端口号。
4 特殊区域的安全限制
4.1 安全域
域或者安全域的概念仅有IE使用,它限制了不同站点的安全策略。在Internet Explorer中用户可见的4个域,分别是:
·Internet域,这是默认的域;
·本地Internet域,简称为本地域,因为权限较大,所以有较多的限制,例如本地域中默认关闭了脚本的执行,同时Internet域也不能访问本地域的内容;
·受信任的站点,在信任的网站列表的网站会受到较小的安全限制,例如可以运行未标记为安全的和未签名的ActiveX控件;
·受信任的站点,这个里面的站点默认会拥有较小的权限。
本地Internet域、受信任的站点通常被称为特权域,而在Chrome、Firefox中俗称的特权域通常指有较高权限或开放了特殊API的页面,从Internet域跳到特权域的攻击,都可称为跨特权域脚本攻击。
4.2 本地域
我们将所有浏览器的本地网页文件都简称为本地域,在网络上的文件称为网络域。本地域和网络域在不同的浏览器中的表现有一些差别。
各浏览器对本地域的判定
本地域
网络域
Internet Explorer
·默认禁止加载JavaScript/VBScript、ActiveX,信息栏提示
·脚本和ActiveX本地交互提示
·被标记为MOTW的本地页面可以运行JavaScript但是不可以访问网络或其他站点
·默认禁止加载不安全的ActiveX
·默认用户单击本地域链接
Firefox
4/13 首页 上一页 2 3 4 5 6 7 下一页 尾页