javascript/event handler内 ' ' " 断句发动xss攻击

decode '  => 单引号
decode '    => 单引号
decode "  => 双引号

发动例:
下边以'为例说明怎样发动xss攻击.

ruby代码
<select id="type" name="type" onchange="window.location.href='/url/ params[:id]/' + this.options[this.selectedIndex].value">
<option value="1">a</option>
<option value="2">b</option></select>

params[:id] = 10qqq&apos;;alert(111);&apos;

HTML代码

<select id="type" name="type" onchange="window.location.href='/url/ 10qqq&apos;;alert(111);&apos;/' + this.options[this.selectedIndex].value">
<option value="1">a</option>

<option value="2">b</option></select>


1:http://example.com/10qqq&apos;;alert(111);&apos;

2:改变下拉框的值发动xss攻击



原因:

在调用javascript解析器之前,浏览器会decode &apos; => '

浏览器只对 javascript(javascript:)或者javascript handler(onclick)中代码进行decode处理


浏览器:

IE发动攻击(&#39; &quot;)

Firefox chrome发动攻击(&apos; &#39; &quot;)


对策:

转义& => &amp; 

rails中用h方法


参考文章:

http://js-quasis-libraries-and-repl.googlecode.com/svn/trunk/safetemplate.html

http://sla.ckers.org/forum/read.php?2,7947,8029

你可能感兴趣的:(javascript/event handler内 ' ' " 断句发动xss攻击)