你还能对这个过滤器进行XSS吗?

时间:2013-08-14 00:03:15

标签: regex xss

我有一个用户可以将数据发布到的个人资料字段。我使用以下正则表达式模式/<(.+?)>/

阻止任何内容

它会阻止任何以&lt;以&gt;结尾这会阻止XSS吗?我的意思是,他们现在无法使用&lt;&gt; HTML标记。

2 个答案:

答案 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
>