1. 程式人生 > >web 安全問題(二):XSS攻擊

web 安全問題(二):XSS攻擊

class http amp 輸入 img xss攻擊 site lov 防禦

上文說完了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向量)為主。
一般有四種方法:

  1. 頁面標簽附帶腳本
  2. Dom 屬性附帶腳本
  3. 請求地址附帶腳本
  4. 回車空格突破過濾限制

舉兩個小李子:

<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攻擊