白帽子講Web安全2.pdf

XSS構造技巧html

利用字符編碼:數據庫

var redirectUrl="\";alert(/XSS/);";json

自己沒有XSS漏洞,但因爲返回頁面是GBK/GB2312編碼的「%c1\」成爲了一個Unicode字符,忽略掉轉義字符\跨域

%c1";alert(/XSS/);//瀏覽器

繞過長度限制:安全

不少時候產生XSS的地方會有變量長度限制,將代碼藏在location.hash中,而後在其餘地方調用便可服務器

http://www.a.com/test.html#alert(1)網絡

<input type="text" value="" onclick="eval(location.hash.substr(1))"/>//去掉第一個字符#session

用戶點擊文本框時觸發playload架構

某些環境下,能夠利用註釋符繞過長度限制

<input id=1 type="text" value=""/>

XXXXXXXXXXXXXX

<input id=2 type="text" value=""/>

第一個文本框輸入"><!--

第二個文本框輸入--><script>...</script>

將中間的代碼註釋掉

使用<base>標籤:

它的做用是定義頁面上的全部使用「相對路徑」標籤的hosting地址

好比<img src="/intl/en_ALL/logon.png"/>

能夠設置

<base href="http://www.google.com"/>

在技術文檔中,提到<base>標籤只能用於<head>標籤內,實際上<base>能夠出如今頁面的任何地方,並做用於該標籤以後的全部標籤,XSS能夠劫持全部使用相對地址的標籤

window.name:window.name對象是沒有特殊字符的限制,因爲window對象是瀏覽器的窗體,並不是document對象,不少時候window對象不受同源策略的限制,能夠實現跨域、跨頁面傳遞數據

在同一窗口www.a.com/test.html中爲window.name賦值,跳轉到www.b.com/test.html中後window.name的值依然是以前頁面的賦值

能夠eval(window.name)

以前講的都是基於HTML的XSS攻擊,在Flash中一樣能夠形成XSS攻擊,ActionScript腳本很是強大靈活,甚至能夠發起網絡鏈接,在實現XSS Filter時,禁用<embed><object>等標籤,若是必定要使用的話,能夠將視頻轉碼爲flv文件,flv是靜態文件,不會產生安全隱患,或者配置相關信息,禁止Flash與頁面進行通訊

JavaScript框架也會存在一些XSS漏洞

XSS防護:瀏覽器禁止頁面的JavaScript訪問帶有HttpOnly屬性的Cookie;輸入檢查是否攜帶非法字符;輸出檢查,將字符編碼和轉義如<編碼爲&lt;

若是網站使用了MVC架構,那麼XSS就發生在View層——在應用拼接變量到HTML頁面時產生

第4章  跨站點請求僞造(CSRF)

CSRF全名是Cross Site Request Forgery,就是跨站點請求僞造

誘使用戶訪問一個頁面(調用Cookie),就以該用戶身份在第三方站點裏執行了一次操做

瀏覽器所持有的Cookie分兩種,一種是「Session Cookie」,又稱「臨時Cookie」;另外一種是「Third-party Cookie」,也稱「本地Cookie」

Third-party Cookie是服務器在Set-Cookie時指定Expire時間,只有到了Expire時間後,Cookie纔會失效(保存在本地),Session Cookie未指定Expire時間,瀏覽器關閉則失效(保持在瀏覽器進程的內存空間)

CSRF防護:

驗證碼

Referer Check最多見的應用是「防止圖片盜鏈」,能夠檢查請求是否來自合法的「源」

CSRF的本質是攻擊者能夠猜想到重要操做的參數,若是參數進行加密或者使用隨機數

第5章 點擊劫持(ClickJacking)


點擊劫持是一種視覺欺騙手段,攻擊者使用一個透明的、不可見的iframe,覆蓋在網頁上(控制iframe的長寬,調整top、left的位置,設置透明度爲0)

一般能夠寫一段JavaScript代碼,禁止iframe的嵌套,這種方法叫frame busting

if(top.location!=location){

top.location=self.location;  //防止當前頁面被嵌套在其餘iframe中

}

第6章 HTML5安全

HTML5爲<iframe>標籤訂義了一個新屬性sandbox,定義新屬性以後<iframe>標籤加載的內容將被視爲一個獨立的「源」(同源策略);

HTML5爲<a>、<area>定義了一個新的Link Types:noreferrer

<a href="xxx" rel="noreferrer">test</a>  //再也不發送Referer,保護隱私信息

同源策略給Web開發者帶來不少問題,由此誕生jsonp、iframe跨域等技巧

HTML5定製了新API:postMessage,它容許每個window(包括當前窗口、彈出窗口、iframes等)對象往其餘窗口發送文本消息,實現跨窗口的消息傳遞,這個功能不受同源策略限制

在窗口的window對象上調用window.postMessage(document.getElementById("...").value);

另外一個窗口監聽document.addEventListener("message",function(e){...},false);

Web Storage:

在Web Storage出現之前,瀏覽器裏存儲信息方式有Cookie(只包含基本信息)、Flash Shared Object(Adobe公司)、IE UserData(微軟公司)

W3C委員會但願在客戶端有一個較爲強大的本地存儲功能,就是Web Storage,它分爲Session Storage(關閉瀏覽器就會失效)和Local Storage(一直存在)

Web Storage就像一個非關係型數據庫,由Key-Value對組成

window.sessionStorage.setItem(key,value);  //設置

window.sessionStorage.getItem(key);  //讀取

Web Storage也受同源策略約束,每一個域所擁有的信息只會保存在本身的域下,其餘域訪問獲得null

相關文章
相關標籤/搜索