javascript事件解码问题如何处理?

发布时间:2019-10-07编辑:脚本学堂
javascript事件解码出现问题怎么办,当 javascript 代码经过编码带入页面,可以利用事件执行时解码的特性对单引号进行闭合,然后利用函数参数的特性进行解码处理。

javascript 事件中,当参数是经过编码的值,javascript 会将期解码进行执行:
 

<a href=# onmousemove="&#97;&#108;&#101;&#114;&#116;&#40;&#47;&#119;&#111;&#121;&#105;
&#103;&#117;&#105;&#47;&#41;">xxx</a>

另外,由于 javascript 支持 函数参数可以是 函数特性:
 

<script>x( alert(1) );</script>

利用两种特性,可引发安全问题:
 

<a href="#" onmousemove="xxx(&#39;+alert(1)+&#39;,44);return false;">woyigui</a>

当 javascript 代码经过编码带入页面,可以利用事件执行时解码的特性对单引号进行闭合,然后利用 函数参数 可以是 函数的特性进行解码。
该方法不能直接用于 《script》内,以下无法执行:
 

<script>
xxx(&#39;+alert(1)+&#39;);
</script>

在特定应用环境中,处理与解决 DOM 型XSS时,将更具有挑战。

解决方法:
在解码后,再次使用符号对其处理,但是考虑到特殊应用可能有所影响。