xss
-
跨站腳本攻擊(cross site scripting):它是通過對網頁注入可執行代碼且成功地被瀏覽器執行,達到攻擊的目的,形成了一次有效XSS攻擊,一旦攻擊成功,它可以獲取用戶的聯系人列
表,然后向聯系人發送虛假詐騙信息,可以刪除用戶的日志等等,有時候還和其他攻擊方式同時實施比如SQL注入攻擊服務器和數據庫、Click劫持、相對鏈接劫持等實施釣魚,它帶來的危害是巨大的,是web安全的頭號大敵。 -
執行條件:
- 需要向web頁面注入惡意代碼;
- 這些惡意代碼能夠被瀏覽器成功的執行。
-
XSS攻擊方式
- XSS存儲型攻擊:惡意代碼被保存到目標網站的服務器中,這種攻擊具有較強的穩定性和持久性,比較常見場景是在博客,論壇等社交網站上,
- XSS反射型攻擊:意代碼並沒有保存在目標網站,通過引誘用戶點擊一個鏈接到目標網站的惡意鏈接來實施攻擊的。
-
xss存儲型攻擊示例:用戶可以一html的方式上傳一次文章,如果黑客用戶在上傳文章時,在html里加入了一些違規的js代碼,那么其他用戶在訪問這篇文章時,瀏覽器會默認執行黑客上傳的js代碼,從而完成了對其他用戶攻擊
-
xss反射型攻擊方式:有時前端html頁面需要把get方式傳回來的字段顯示到頁面上,這時如果黑客在傳的字段后加上一段js代碼,則也是有可能被執行的。例如:
http://www.xxx.com/?id=" /><script>alert(/xss/)</script><br x="
//最終反射出來的HTML代碼:
<div>
<img src="/images/handler.ashx?id=" /><script>alert(/xss/)</script><br x="" />
</div>
- 攻擊類型很多,例如:
- 盜取用戶賬號cookie
- 流量劫持(通過訪問某段具有window.location.href定位到其他頁面)
- 防御方式:
- 將前端提交的數據編碼轉義:一般表單提交的時候完全可以用strip_tags函數去除html標簽,如果涉及到富文本編輯器需要保留html標簽,可以用htmlspecialchars對提交數據進行過濾,從而轉換(& < > ’ ” )這幾個字符;還有可以利用htmlentities函數轉換所有的html標記
- 對cookie的保護:對重要的cookie設置httpOnly, 防止客戶端通過document.cookie讀取cookie。服務端可以設置此字段。
- 過濾掉所有可執行的js代碼:例如利用lexer方式