web 安全問題(二):XSS攻擊
上文說完了CSRF攻擊,本文繼續研究它的兄弟XSS攻擊。
什麽是XSS攻擊
XSS攻擊的原理
XSS攻擊的方法
XSS攻擊防禦的手段
什麽是XSS攻擊
XSS攻擊全名(Cross-Site-Script)跨域腳本攻擊,為了跟CSS(Cascading-Style-Sheet)區分開來,所以縮寫是XSS。
XSS攻擊的原理
上一節說道的CSRF攻擊是利用的是“偽請求”,這一節的XSS的原理是利用腳本註入的方式。
主要是依靠一切可能的手段,將瀏覽器中可以執行的腳本(javascript)植入到頁面代碼中,從而獲取用戶cookie甚至賬號密碼等敏感數據使用戶造成的一定的損失。
通常利用的是目標網站的發帖、發布產品等需要用戶輸入的地方,將腳本混淆到html輸入中,上傳到服務器,再誘導別的用戶打開此頁面,執行腳本的一個過程。
XSS攻擊的方法
xss漏洞是對web客戶端(瀏覽器)的攻擊,所以說植入的代碼基本上以javascript和html標簽(有時也有結合css樣式的xss向量)為主。
一般有四種方法:
- 頁面標簽附帶腳本
- Dom 屬性附帶腳本
- 請求地址附帶腳本
- 回車空格突破過濾限制
舉兩個小李子:
<script>alert(‘xss‘)</script> <img scr=1 onerror=alert(‘xss‘)> <a href=javascrip:alert(‘xss‘)>s</a> <iframe src=javascript:alert(‘xss‘);height=0 width=0 /> <img src=x onerror=appendChild(createElement(‘script‘)).src=‘js_url‘ /> <img src = “#”/**/onerror = alert(/XSS/)> <img src = j ava script :a ler t(/xss/)>
XSS攻擊防禦的手段
因為XSS的根本就是向網站插入腳本代碼,並使它運行的一種手段。防禦方法分為兩種,服務端防禦和客戶端防禦。
服務端防禦:
1. HttpOnly
可以限制javascript不能讀取cookie,防止會話ID泄露
2.處理富文本
過濾掉富文本中的敏感標簽如(script、iframe、form),還有敏感詞(javascript:) 等等
客戶端防禦:
1. 輸入檢查
防止輸入敏感字段,如javascript、cookie
等等
2. 檢查輸出
腳本都是通過混淆在HTML當中,被當成html代碼的一部分才得到執行。
可以通過編碼轉義的辦法,使得混淆在其中的腳本被當成文本處理,不會被執行。
編碼轉義的話,有三種方法:
1. HTML encode
將字符轉換成HTMLEntities,一般會轉(&、<、>、"、‘、/)這6個字符。一般是在html標簽屬性輸出的時候使用
2. JavaScriptEncode
使用”“對特殊字符進行轉義。
一般在script標簽輸出、事件輸出、CSS輸出
3. URL Encode
使用URLEncode的方法。
參考:
XSS的原理分析與解剖
跨站腳本攻擊(XSS)——常見網站攻擊手段原理與防禦
XSS攻擊及防禦
XSS攻擊的解決方法
web 安全問題(二):XSS攻擊