摘自《白帽子講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>