XSS构造剖析
1.利用<>标记注射Html/Javascript
如果用户可以使用<>等标记,可以使用<script>标签注入
<script>alert('xss')</script>
2.利用HTML标签属性值执行XSS
不能自己构造HTML标签,可以使用已有的HTML标签的属性值。很多HTML标签属性值都支持javascript:[code]的伪协议的形式
<form action="javascript:alert('xss')"> <input type="submit" value="提交"> </form>
过滤javascript等关键字,可以防御基于属性值的xss
3.空格回车Tab
使用关键字拆分的技巧,JavaScript除了在引号中分割单词或强制结束语句之外,额外的空白无论以何种方式添加都无所谓
4.对标签属性值转码
HTML属性值本身支持ASCII码的形式
<form action="javascript:alert('xss')"> <input type="submit" value="提交"> </form>
t的ASCII的值是116,用"t"表示,:则表示为:
为了防范利用HTML标签属性编码的xss,最好也过滤&#\等字符
5.产生自己的事件
JavaScript与HTML之间的交互是通过事件来实现的,而响应事件的函数就叫做事件处理函数
<input type="button" onclick="alert('xss')" value="clcik me">