javascript事件解码引起的问题
在javascript 事件中,当参数是经过编码的值,javascript 会将期解码进行执行,如下代码。
<a href=# onmousemove="alert(/woyigui/)">xxx</a>
另外,由于 javascript 支持 函数参数可以是 函数特性,如下代码:
<script>x( alert(1) );</script>
利用两种特性,就可以引发如下的安全问题:
<a href="#" onmousemove="xxx(''+alert(1)+'',44);return false;">woyigui</a>
当 javascript 代码经过编码带入页面,可以利用事件执行时解码的特性对单引号进行闭合,然后利用 函数参数 可以是 函数的特性进行代码。该方法不能直接用于 《script》内,比如如下代码是不能执行的:
<script> xxx(''+alert(1)+''); </script>
由于如上问题,在特定应用环境中,处理与解决 DOM 型XSS 的时候,将更具有挑战。解决方法就是在解码后,再次使用 \ 符号对其处理,但是考虑到特殊应用可能有所影响。
转载请注明:woyigui's blog [http://www.woyigui.cn/]
本文标题:javascript事件解码引起的问题
本文地址:http://www.woyigui.cn/2010/01/22/javascript-decode-xss/
XSS有时可以借鉴下!
[回复]
在js执行的地方,要做jsencode,而不是htmlEncode等编码。
[回复]
woyigui 回复:
一月 28th, 2010 at 上午 5:33
是呀,就是出在未正确的处理上。
[回复]
是可以借鉴一下的
[回复]
偶像。。。看官快献菊。。
[回复]
借鉴了哦。。。。
[回复]
学习了
[回复]
经典
[回复]