表单字段验证:要包含/排除哪些字符?

时间:2012-09-02 06:14:57

标签: forms validation passwords username

Google搜索为我提供了验证表单字段的方法,但我已经可以构建它们了。我的问题是,哪些字符可以安全包含哪些字符并在表单字段中排除?具体来说,用户名和密码。

简短的解释也很不错。

感谢。

2 个答案:

答案 0 :(得分:1)

您需要排除数据中永远不会有的所有字符。 如果您的用户名/密码必须只包含字母数字字符,您认为拥有特殊字符是否合理?

查看REGEXJAVA的某些PHP

还有regexp reference table也很有用。

如果您向我们提供有关您使用的语言的更多信息,我们可能会帮助我们更多。 祝你有个美好的一天!

<强> [UPDATE] security reference非常好,而OWASP website是任何与网络安全相关的主题的真实参考,请查看OWASP Cheat Sheets

#**Cross-Site Scripting Vulnerabilities?**
#for any programming language, the chars you should reject or handle properly are:
>     <   (     )     [     ]     '     "     ;     :     /     |

#for PHP, tools to handle with care:
strip_tags(), utf8_decode(), htmlspecialchars(), strtr()

#do Positive/Negative filtering
#check Encoding

#**SQL Injection ?**
#etc...

<强> [/ UPDATE]

答案 1 :(得分:1)

如果你正确地清理你的输入和输出,你就不必担心。

注意:我假设您使用的是PHP作为服务器端语言。

首先,将PDO(或MySQLi)与预准备语句一起使用,以消除SQL注入的风险。

其次,将在您的网站上显示的任何内容都应针对XSS攻击进行清理(以便用户不会注册<script>doSomeEvilStuff()</script>的用户名。)

基本上就是这样,如果你真的是偏执狂,你应该使用白名单(只允许某些字符)而不是黑名单(只能禁止某些字符),因为有人会总是找到绕过黑名单的方法,但没有人可以绕过白名单。

对于用户名,我认为不需要/[a-zA-Z0-9_.\s!$%^&*\-+=]/以外的任何其他内容。无论如何,请勿允许/[`<>(){}[]]/