1. 程式人生 > >白帽子講web安全---web瀏覽器安全

白帽子講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上此策略檔案是否存在,如果檔案存在,則檢查發起的請求域是否在許可範圍內。

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