白帽子講web安全---web瀏覽器安全

同源策略:限制了來自不同源的“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上此策略文件是否存在,如果文件存在,則檢查發起的請求域是否在許可範圍內。

問題是同源策略並非是牢不可破的,部分瀏覽器漏洞會,將同源策略繞過。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章