《白帽子讲web安全》第二章笔记

浏览器安全

同源策略SOP(Same Origin Policy)

浏览器的同源策略,限制了来自不同源的"Document"或脚本,对当前"Document"读取或设置某些属性

<script> <img> <iframe> <link> 可以跨域加载资源,不受同源策略的影响。这些带"src"属性的标签每次加载时,实际上是又浏览器发送了一次GET请求。不同于XMLHttpRequest的是。通过src属性加载的资源,浏览器限制了JavaScript的权限,使其不能读、写返回的内容

对于XMLHttpRequest来说,它可以访问来自同源的内容。但XMLHttpRequest收到同源策略的约束,不同跨服访问资源。

 1 <html>
 2 <head>
 3 <script type="text/javascript">
 4     var xmlhttp;
 5     function loadXMLDoc(url)
 6     {
 7         xmlhttp=null;
 8         if(window.XMLHttpRequest) //XMLHttpRequest-来实现发送和接收HTTP请求与响应信息
 9         {
10             xmlhttp=new XMLHttpRequest();
11         }
12         else if (window.ActiveXObject)  //启用并返回 Automation对象的引用
13         {
14             xmlhttp=new Activation("Microsoft.XMLHTTP");
15         }
16         if (xmlhttp!=null) 
17         {
18             xmlhttp.onreadystatechange=state_Change;
19             xmlhttp.open("GET",url,true);
20             xmlhttp.send(null);
21         }
22         else
23         {
24             alert("Your browser doex not support XMLHTTP.");
25         }
26     }
27     function state_Change()
28     {
29         if(xmlhttp.readyState==4)
30         {
31             if(xmlhttp.status==200)
32             {
33                 document.getElementById('T1').innerHTML=xmlhttp.responseText;
34             }
35             else
36             {
37                 alert("Problem retriveing data:"+xmlhttp.statusText);
38             }
39         }
40     }
41 </script>
42 </head>
43 <body onload="loadXMLDoc('/example/xdom/test_xmlhttp.txt')">
44     <div id="T1" style="border:1px solid black;height: 40;width: 300;padding: 5"></div>
45     <br />
46     <button onclick="loadXMLDoc('/example/xdom/text_xmlhttp2.txt')">Click</button>
47 </body>
48 </html>

XMLHttpRequest跨越访问标准。

通过目标域返回的Http头来授权是否允许跨服访问

假设从 http://www.a.com/test.html发起一个跨域的XMLHttpRequest请求到 http://www.b.com/test.php,发起的请求HTTP投必须带上 Origin,而B站点服务器返回一个HTTP头包含 Access-Control-Allow-Origin: http://www.a.com,那么这个请求就会被通过

浏览器沙盒

将浏览器的各个功能模块分开,各个浏览器实例分开,当一个进程奔溃时,也不会影响到其他的进程。

Chrome是第一个采用多进程架构的浏览器,主要进程分为:浏览器进程、渲染进程、插件进程、扩展进程。

渲染引擎由沙盒隔离, 网页代码要与浏览器内核进程、操作系统通信,需要通过IPC channel,在其中会进行一些安全检查。这可以让不受信任的网页或JavaScript代码运行在一个受限的环境中,保护本地系统的安全。

Chrome的Sandbox结构
Chrome每个标签页和扩展都在独立的沙盒内运行,在提高安全性的同时,一个标签页面的崩溃也不会导致其他标签页面被关闭,但由于过于占用内存,现在已经变成有些网页公用一个进程,它们和服务器保持共同的会话。

恶意网站拦截

恶意网站拦截的工作原理:浏览器周期性地从服务器获取一份最新的恶意网址黑名单,如果访问的网址存在于此黑名单中,浏览器就会弹出警告

扫描二维码关注公众号,回复: 1539933 查看本文章

恶意网站分类:

  挂马网站

  钓鱼网站

Content Security Policy(CSP)

Firefox4推出Content Security Policy(CSP),后来被其他浏览器支持。
CSP的做法是,由服务器端返回一个Content-Security-Policy的HTTP头,在其中描述页面应该遵守的安全策略,让浏览器不再盲目信任服务器发送的所有内容,并且能让浏览器只执行或者渲染来自这些源的内容。
使用CSP的方法就是插入一个HTTP返回头
Content-Security-Policy:policy
Content-Security-Policy:allow 'self' *.mydomain.com

猜你喜欢

转载自www.cnblogs.com/98Lucifer/p/9160242.html