我正在尝试将表单验证添加到我的html网站,以防止xss注入攻击。
我正在使用一个简单的java表单验证器genvalidator_v4.js,它允许我使用正则表达式来确定文本框中允许的内容。我试图写一个会阻止“<”或“>”或者可以在此类攻击中使用的任何其他标记,但仍允许使用字母数字,标点符号和其他特殊字符。
有什么想法吗?也可以使用其他防止xss攻击的方法,但我在这方面非常缺乏经验,所以请尽量保持简单。
答案 0 :(得分:0)
您正在尝试黑名单危险输入。这非常棘手,因为可能危险的令牌数量太多而很容易弄错。
因此,建议采用以下两种做法:
逃离在网页上输出之前从数据库读取的所有内容。如果你正确HtmlEncode所有(你选择的语言肯定有一个库方法),如果用户输入<script>/* do something evil */</script>
并且该代码存储在您的数据库中,它并不重要 。正确编码,这将只是逐字打印,不会造成伤害。
如果您仍希望过滤输入(可能非常有用附加安全层),白名单通常是比黑名单更安全。因此,您可以说字母,数字,标点符号等是安全的,而不是说<
是有害的。究竟什么是安全的取决于您要过滤的字段类型。