码迷,mamicode.com
首页 > Web开发 > 详细

[读书笔记]白帽子讲WEB安全-第二章

时间:2015-08-01 06:29:55      阅读:195      评论:0      收藏:0      [点我收藏+]

标签:javascript   document   用户登录   浏览器   读书笔记   

声明:

    读书笔记是我在阅读过程中做的一些笔记,并在其中添加自己的思考。文章中会涉及到部分书籍原文内容,如有侵权,请联系告知并删除。

    原文一切版权归本书作者所有,其他思考痕迹保留所有权。


========================================



第2章 浏览器安全

2.1 同源策略

     同源策略(Same Origin Policy)是一种约定,它是浏览器最核心也是最基本的安全功能。

     浏览器的同源策略,限制了来之不同源的“document”或脚本,对当前“document”读取或设置某些属性。 


     举个例子:比如一个恶意网站的页面通过iframe嵌入了银行的登录页面(二者不同源),如果没有同源限制,恶意网页上的javascript脚本就可以在用户登录银行的时候获取用户名和密码。——引用其他内容


     从一个域上加载的脚本不允许访问另外一个域的文档属性。——引用其他内容

     影响“源”的因素有:host(域名或IP地址)、子域名、端口、协议

     需要注意的是,对于当前页面,页面内存放JavaScript文件的域并不重要,重要的是加载JavaScript页面所在的域是什么。

     例如:a.com通过代码<script src=http://b.com/b.js></script>加载b.com上的b.js,但b.js是运行在a.com页面中的,因此对于挡墙打开的页面(a.com页面)来说,b.js的Origin是a.com而非b.com。

     在浏览器中,<script>、<img>、<iframe>、<link>等标签都可以跨域加载资源,而不受同源策略的限制。这些带“src”属性加载的资源,浏览器限制了JavaScript的权限,使其不能读、写返回的内容。

     XMLHttpRequest受同源策略限制,但W3C制定了XMLHttpRequest跨域访问标准,通过目标域返回的HTTP头来授权是否允许跨域访问。具体在“HTML 5 安全”一章中继续探讨。

     DOM、Cookie、XMLHttpRequest受到同源策略的限制外,浏览器的加载的一些第三方插件也有各自同源策略。常见的一些插件如Flash、Java Applet、Silverlight、Google Gears等都有自己的控制策略。

     以Flash为例,它主要通过目标网站提供的crossdomain.xml文件判断是否允许当前“源”的Flash跨域访问目标资源。

     以www.qq.com的策略文件为例,当浏览器在任意其他域的页面加载了Flash后,如果对www.qq.com发起访问请求,Flash会先检查www.qq.com上此策略是否存在。如果文件存在,则检查发起请求的域是否在许可范围内。代码如下:

     www.qq.com/crossdomain.xml

          <cross-domain-policy>

          <allow-access-from domain="*.qq.com"/>

          <allow-access-from domain="*.gtimg.com"/>

          </cross-domain-policy>

     在Flash9及以后的版本,还实现了MIME检查以确认crossdomain.xml是否合法,也会检查crossdomain.xml是否在根目录下。

---------------------------------------------------

     IE8 CSS跨域实例:

     

     www.a.com/test.html

          <body>

          {}body{font-family:

          aaaaaaa

          bbbbbbbbb

          </body>

     

     www.b.com/test2.html

          <body>

          <style>

          @import url("http://www.a.com/test.html");

          </style>

          <script>

               setTimeout(function(){

               var t = document.body.currentStyle.fontFamily;

               alert(t);

          },2000);

          </script>

     在www.b.com/test2.html中通过@import加载了www.a.com/test.html为CSS文件,渲染进入当前页面的DOM,同时通过document.body.currentStyle.fontfamily访问此内容。问题发生在IE的CSS Parse的过程中,IE将fontFamily后面的内容当做了value,从而可以读取www.a.com/test.html页面的内容。

------------------------------------------------------------     

     读后感:

    

      从上述例子来看,同源策略限制了对非同源的文件、脚本的访问。是否可以这样理解,如果没有同源策略,一个页面的恶意脚本可以通过任意访问任意域的内容,在对某个域访问(如Gmail)的时候,可以带着浏览器已经存在的数据(如Cookie)去访问目标域,并通过脚本文件读取目标域的内容,于是用户的信息便被恶意脚本获取了。

2.2 浏览器沙箱

     在网页中插入一段恶意代码,利用浏览器漏洞执行任意代码的攻击方式,在黑客圈子被形象称为“挂马”。“挂马”是浏览器需要面对的一个主要威胁。

     Sandbox即沙箱,泛指“资源隔离类模块”的代名词。Sandbox的设计目的一般是为了让不可信任的代码运行在一定的环境中,限制不可信任的代码访问隔离区之外的资源。如果一定要跨越Sandbox边界产生数据交换,则只能通过指定的数据通道,比如经过封装的API来完成,在这些API会严格检查请求的合法性。

     浏览器采用sandbox技术,无疑可以让不受信任的网页代码、javascript代码运行在一个受限制的环境中,从而保护本地桌面系统的安全。

     浏览器安全是一个整体,在现今的浏览器中,虽然有多进程架构和sandbox的保护,但是浏览器所加载的一些第三方插件往往不受sandbox管辖。

2.3 恶意网址拦截

     在很多时候,“挂马”攻击在实施时会在一个正常的网页中通过<script><iframe>等标签加载一个恶意网址。为了保护用户安全,浏览器厂商推出拦截恶意网址功能。目前各个浏览器的拦截恶意网址的功能都是基于“黑名单”的。

     常见的恶意网址分两类

     1. 挂马网站:包含恶意脚本如javascript或flash,通过浏览器的漏洞(包括一些插件、控件的漏洞)执行shellcode,在用户电脑中植入木马;

     2. 钓鱼网站,通过模仿知名网站的相似页面来欺骗用户。

     PhishTank是互联网上免费提供恶意网址黑名单的组织之一。

     SafeBrowsing API :Google公开了其内部使用的

     EV SSL 证书:是全球数字证书颁发机构与浏览器厂商一起打造的增强型证书,其主要特色是浏览器会给予EVSSL证书特殊待遇。EVSSL也遵循X509标准,并向前兼容普通证书。

2.4 高速发展的浏览器安全

     IE8=>XSS Filter : 对抗反射型XSS

     当用户访问的URL中包含了XSS攻击的脚本时,IE就会修改其中的关键字符使其攻击无法成功完成,并对用户弹出提示框。

     Firefox4=>Content Security Policy(CSP)

     由服务器返回一个HTTP头,并在其中描述页面应该遵守的安全策略。

     由于XSS攻击在没有第三方插件帮助的情况下,无法控制HTTP头,所有是有效的。

     这种自定义的语法必须由浏览器支持并实现,Firefox是第一个支持此标准的浏览器。

     例子如下:插入一个HTTP返回头:

     X-Content-Securlty-Policy: policy 

     其中policy描述极为灵活,比如

     X-Content-Securlty-Policy: allowe ‘self‘ ; *.mydomain.com ; img-src * ;

     浏览器信任来自mydomain.com及其子域下的内容。

     

     浏览器对畸形URL人性化处理,有可能会被黑客利用,绕过一些安全软件或安全模块。

     浏览器加载的插件也是浏览器安全需要考虑的一个问题。扩展和插件的权限都高于页面的javascript的权限,比如可以进行一些跨域网络请求等。



[读书笔记]白帽子讲WEB安全-第二章

标签:javascript   document   用户登录   浏览器   读书笔记   

原文地址:http://dijxx0.blog.51cto.com/10127150/1680744

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!