白帽子讲web安全---web浏览器安全

来源:互联网 发布:javascript mdn 中文 编辑:程序博客网 时间:2024/06/05 17:44

同源策略:限制了来自不同源的“document”或脚本,对当前的“document”读取或设置某些属性。
影响同源的因素:host(域名或ip地址),子域名,端口,协议
在浏览器中<script><img><iframe><link>都可以进行跨域加载,带有“src“的属性标签加载资源时,实际上是由浏览器发起一次GET请求。
不同于XMLHttpRequest,通过src属性加载资源时,浏览器限制了javascript的权限,使其不能读,写返回的内容

AJAX的主要技术实现(非ie浏览器)XMLHTTPRequest :XHR英文全名XmlHttpRequest,中文可以解释为可扩展超文本传输请求。XMLHttpRequest对象可以在不向服务器提交整个页面的情况下,实现局部更新网页。当页面全部加载完毕后,客户端通过该对象向服务器请求数据,服务器端接受数据并处理后,向客户端反馈数据。 XMLHttpRequest 对象提供了对 HTTP 协议的完全的访问,包括做出 POST 和 HEAD 请求以及普通的 GET 请求的能力。XMLHttpRequest 可以同步或异步返回 Web 服务器的响应,并且能以文本或者一个 DOM 文档形式返回内容。尽管名为 XMLHttpRequest,它并不限于和 XML 文档一起使用:它可以接收任何形式的文本文档。XMLHttpRequest 对象是名为 AJAX 的 Web 应用程序架构的一项关键功能。

XMLRequestHttp受到同源策略的约束,不能进行跨域访问资源,在AJAX中受限

<!DOCTYPE html><html lang="en"><head>    <meta charset="UTF-8">    <title>demo XMLHttpRequest</title>    <script type="text/javascript">    var xmlhttp;    function loadXMLDoc(url)    if(window.XMLHttpRequest)    {        //code for firefox,Opera,IE7 ,etc.        xmlhttp=new XMLHttpRequest();    }    else if(window.ActiveXObject)    {        //code for IE6,IE5        xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");    }    if(xmlhttp!=null)    {        xmlhttp.onreadystatechange=state_Change;        xmlhttp.open("GET";url,true)        xmlhttp.send(null);    }    else    {        alert("your browser dose not support XMLHttpRequest");    }    function state_Change()    {        if(xmlhttp.readystate==4)        {            //4="loaded"            if(xmlhttp.status==200)            {                //200="ok"                document.getElementById("T1").innerHTML=xmlhttp.responseText;            }            else            {                alert("roble retriveing date:"+xmlhttp.statusText);            }        }       }    </script></head><body onload="loadXMLDoc('C:/xmlhttp.txt')"><div id="T1" style="border:1px solid #e3e3e3;height:40;width:300;padding:5"></div><br/><button onclick="loadXMLDoc('C:/xmlhttp.txt')"> </body></html>

如果对XMLHttpRequest不加以限制,会造成CSRF的token
解决方案:通过目标域返回HTTP的头部来授权是否允许跨域访问javascript本身无法操作HTTP头部,在H5中加入。

CSRF:CSRF(Cross-site request forgery跨站请求伪造,也被称为“One Click Attack”或者Session Riding,通常缩写为CSRF或者XSRF,是一种对网站的恶意利用。尽管听起来像跨站脚本(XSS),但它与XSS非常不同,并且攻击方式几乎相左。XSS利用站点内的信任用户,而CSRF则通过伪装来自受信任用户的请求来利用受信任的网站。与XSS攻击相比,CSRF攻击往往不大流行(因此对其进行防范的资源也相当稀少)和难以防范,所以被认为比XSS更具危险性。

token:(信息安全)在计算机身份认证中是令牌的意思,在词法分析中是标记的意思。Token, 令牌,代表执行某些操作的权利的对象
访问令牌(Access token)表示访问控制操作主题的系统对象
邀请码,在邀请系统中使用
Token, Petri 网(Petri net)理论中的Token
密保令牌(Security token),或者硬件令牌,例如U盾,或者叫做认证令牌或者加密令牌,一种计算机身份校验的物理设备
会话令牌(Session token),交互会话中唯一身份标识符
令牌化技术 (Tokenization), 取代敏感信息条目的处理过程
(网络)
Token ring 即 令牌环网,网络技术里面的:
令牌是一种能够控制站点占有媒体的特殊帧,以区别数据帧及其他控制帧。

在浏览器中DOM,Cookie,XMLHttpRequest 会受到同源策略的影响,此外一些第三方插件也同样受到影响,flash,java Applet,sliverlight,Google Grears,etc.

flash同源策略,通过目标网站提供的crossdomain.xml文件判断是否允许当前”源(origin)”的flash跨域访问资源

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

问题是同源策略并非是牢不可破的,部分浏览器漏洞会,将同源策略绕过。

0 0
原创粉丝点击