概念:跨站腳本攻擊(XSS)是指惡意攻擊者往Web頁面里插入惡意Script代碼,當用戶瀏覽該頁之時,嵌入其中Web裡面的Script代碼會被執行,從而達到惡意攻擊用戶的目的。XSS漏洞通常是通過php的輸出函數將javascript代碼輸出到html頁面中,通過用戶本地瀏覽器執行的,所以xss漏洞 ...
概念:跨站腳本攻擊(XSS)是指惡意攻擊者往Web頁面里插入惡意Script代碼,當用戶瀏覽該頁之時,嵌入其中Web裡面的Script代碼會被執行,從而達到惡意攻擊用戶的目的。XSS漏洞通常是通過php的輸出函數將javascript代碼輸出到html頁面中,通過用戶本地瀏覽器執行的,所以xss漏洞關鍵就是尋找參數未過濾的輸出函數。
我們可以將其分成三類:
(1)反射型XSS:<非持久化> 攻擊者事先製作好攻擊鏈接, 需要欺騙用戶自己去點擊鏈接才能觸發XSS代碼(伺服器中沒有這樣的頁面和內容),一般容易出現在搜索頁面。
(2)存儲型XSS:<持久化> 代碼是存儲在伺服器中的,如在個人信息或發表文章等地方,加入代碼,如果沒有過濾或過濾不嚴,那麼這些代碼將儲存到伺服器中,每當有用戶訪問該頁面的時候都會觸發代碼執行,這種XSS非常危險,容易造成蠕蟲,大量盜竊cookie(雖然還有種DOM型XSS,但是也還是包括在存儲型XSS內)。
(3)DOM型XSS:基於文檔對象模型Document Objeet Model,DOM)的一種漏洞。DOM是一個與平臺、編程語言無關的介面,它允許程式或腳本動態地訪問和更新文檔內容、結構和樣式,處理後的結果能夠成為顯示頁面的一部分。DOM中有很多對象,其中一些是用戶可以操縱的,如uRI ,location,refelTer等。客戶端的腳本程式可以通過DOM動態地檢查和修改頁面內容,它不依賴於提交數據到伺服器端,而從客戶端獲得DOM中的數據在本地執行,如果DOM中的數據沒有經過嚴格確認,就會產生DOM XSS漏洞。
這些攻擊主要存在搜索功能,我們輸入:<script>alert('xss')</script> 結果如下圖:
我們查看網頁代碼時候可以在其中發現有一行如下:
解決方法:用htmlentities() 函數把字元轉換為 HTML 實體。
此時再次輸入<script>alert('xss')</script>,發現網頁顯示正常!!