用于表单验证的RegEx表达式

时间:2011-12-25 23:23:58

标签: regex xss

我正在尝试将表单验证添加到我的html网站,以防止xss注入攻击。

我正在使用一个简单的java表单验证器genvalidator_v4.js,它允许我使用正则表达式来确定文本框中允许的内容。我试图写一个会阻止“<”或“>”或者可以在此类攻击中使用的任何其他标记,但仍允许使用字母数字,标点符号和其他特殊字符。

有什么想法吗?也可以使用其他防止xss攻击的方法,但我在这方面非常缺乏经验,所以请尽量保持简单。

1 个答案:

答案 0 :(得分:0)

您正在尝试黑名单危险输入。这非常棘手,因为可能危险的令牌数量太多而很容易弄错。

因此,建议采用以下两种做法:

  • 逃离在网页上输出之前从数据库读取的所有内容。如果你正确HtmlEncode所有(你选择的语言肯定有一个库方法),如果用户输入<script>/* do something evil */</script>并且该代码存储在您的数据库中,它并不重要 。正确编码,这将只是逐字打印,不会造成伤害。

  • 如果您仍希望过滤输入(可能非常有用附加安全层),白名单通常是比黑名单更安全。因此,您可以说字母,数字,标点符号等是安全的,而不是说<是有害的。究竟什么是安全的取决于您要过滤的字段类型。