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

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

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

ruby代码
<select id="type" name="type" οnchange="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" οnchange="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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值