Google搜索为我提供了验证表单字段的方法,但我已经可以构建它们了。我的问题是,哪些字符可以安全包含哪些字符并在表单字段中排除?具体来说,用户名和密码。
简短的解释也很不错。
感谢。
答案 0 :(得分:1)
您需要排除数据中永远不会有的所有字符。 如果您的用户名/密码必须只包含字母数字字符,您认为拥有特殊字符是否合理?
还有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!$%^&*\-+=]/
以外的任何其他内容。无论如何,请勿允许/[`<>(){}[]]/