1. 程式人生 > >Http-only原理與防禦XSS實踐

Http-only原理與防禦XSS實踐

預備知識

XSS攻擊

      Http-only的設計主要是用來防禦XSS攻擊,所以學習本實驗的讀者應首先了解XSS攻擊的相關原理內容。

      跨站點指令碼攻擊是困擾Web伺服器安全的常見問題之一。跨站點指令碼攻擊是一種伺服器端的安全漏洞,常見於當把使用者的輸入作為HTML提交時,伺服器端沒有進行適當的過濾所致。跨站點指令碼攻擊可能引起洩漏Web 站點使用者的敏感資訊。為了降低跨站點指令碼攻擊的風險,微軟公司的Internet Explorer 6 SP1引入了一項新的特性。 

      對於很多隻依賴於cookie驗證的網站來說,Http-only cookies是一個很好的解決方案,在支援Http-only cookies的瀏覽器中(IE6以上,FF3.0以上),Javascript是無法讀取和修改Http-only cookies,這樣可讓網站使用者驗證更加安全。

實驗目的

 

1)瞭解Http-only的作用及在Cookie中的存在方式

 

2)掌握通過設定Http-only防禦XSS攻擊

實驗環境

 

一臺Windows XP主機

 

主機部署實驗測試網站

 

主機安裝Fiddler軟體

實驗步驟

 

觸發XSS漏洞

 

      在IE瀏覽器中訪問本實驗的測試網站: http://10.1.1.189/httponly-test/login.php

 

      (注意,本實驗一定要在IE中瀏覽網頁,這是因為目前版本的IE沒有XSS過濾器,方便我們做實驗)

 

      此時我們開啟fiddler工具抓包,返回瀏覽器,在登入框中輸入使用者ID:admin 和密碼:123456進行登入。登入後我們可以看到主介面:

 

  在Fiddler中檢視剛剛用於登入的HTTP包,觀察響應頭的Cookie欄位(紅色框內),記錄下此時的cookie內容:

 

這裡的暱稱輸入框由於沒有對輸入字元進行過濾,存在XSS漏洞。我們在框中輸入“<script>alert(document.cookie);</script>”提交驗證,結果彈出如下提示,從而驗證了XSS漏洞的存在。(對於XSS不理解的讀者一定要首先掌握XSS基本知識)

 

在網站建設過程中,由於程式設計人員安全意識薄弱或工作疏忽,很容易出現如上所示的XSS漏洞。惡意攻擊者可以利用該種漏洞竊取使用者Cookie資訊,從而冒充使用者身份訪問網站。應對XSS攻擊,可以採用對輸入(輸出)文字進行特殊字元過濾的方式,但由於網站業務型別複雜多樣,且針對過濾也存在繞過方法,所以,僅僅通過過濾手段並不能完全解決XSS問題。Http-only的引入,就是從防止指令碼讀取Cookie的角度有效防禦了XSS漏洞的攻擊。