web安全三,XSS攻擊

上文說完了CSRF攻擊,本文繼續研究它的兄弟XSS攻擊。javascript

什麼是XSS攻擊

XSS攻擊全名(Cross-Site-Script)跨域腳本攻擊,爲了跟CSS(Cascading-Style-Sheet)區分開來,因此縮寫是XSS。css

XSS攻擊的原理

上一節說道的CSRF攻擊是利用的是「僞請求」,這一節的XSS的原理是利用腳本注入的方式。
主要是依靠一切可能的手段,將瀏覽器中能夠執行的腳本(javascript)植入到頁面代碼中,從而獲取用戶cookie甚至帳號密碼等敏感數據使用戶形成的必定的損失。
一般利用的是目標網站的發帖、發佈產品等須要用戶輸入的地方,將腳本混淆到html輸入中,上傳到服務器,再誘導別的用戶打開此頁面,執行腳本的一個過程。html

XSS攻擊的方法

xss漏洞是對web客戶端(瀏覽器)的攻擊,因此說植入的代碼基本上以javascript和html標籤(有時也有結合css樣式的xss向量)爲主。
通常有四種方法:java

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

舉兩個小李子:web

<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代碼的一部分才獲得執行。
能夠經過編碼轉義的辦法,使得混淆在其中的腳本被當成文本處理,不會被執行。
編碼轉義的話,有三種方法:segmentfault

*1.  HTML encode*
    將字符轉換成HTMLEntities,通常會轉(&、<、>、"、'、/)這6個字符。通常是在html標籤屬性輸出的時候使用
*2.  JavaScriptEncode*
    使用」\「對特殊字符進行轉義。
    通常在script標籤輸出、事件輸出、CSS輸出
*3.  URL Encode*
    使用URLEncode的方法。

參考:
XSS的原理分析與解剖
跨站腳本攻擊(XSS)——常見網站攻擊手段原理與防護
XSS攻擊及防護
XSS攻擊的解決方法跨域

【相關】
web安全,是一個很重要的技能,也是一個領域的知識。我把這個領域的東西寫成了一個系列,之後還會繼續完善下去:
web安全一:同源策略與跨域
web安全二:CSRF 攻擊
web安全三:XSS 攻擊瀏覽器

相關文章
相關標籤/搜索