我有一个用户可以将数据发布到的个人资料字段。我使用以下正则表达式模式/<(.+?)>/
它会阻止任何以&lt;以&gt;结尾这会阻止XSS吗?我的意思是,他们现在无法使用&lt;&gt; HTML标记。
答案 0 :(得分:4)
事实上,xss攻击并不需要关闭括号。
例如,this page列出了一个在IE中运行的文件
<IMG SRC="javascript:alert('XSS')"
无论如何,你没有意识到这一点的事实应该教你一课。像这样的黑名单容易出错,注定要失败。您应该使用一个应用适当转义的模板(在这种情况下是HTML实体编码,但它取决于输出将出现的上下文)。
如果你可以逃脱它,将输入限制为像字母数字一样安全的字符集,这样你就不必担心这一点。并确保正确处理unicode和null字符。
答案 1 :(得分:0)
浏览器在解析html时非常宽容。我怀疑以下输入没有关闭标签,将起作用:
<input onfocus=alert(1) autofocus type=text
使用实体转义或白名单
哦,而且。不匹配\ n,所以你有另一个旁路:
<script
>