谷歌搜索给了我验证表单字段的方法,但我已经可以构建它们了。我的问题是,哪些是可以安全包含的字符,哪些是在表单字段中排除的?具体来说,用户名和密码。
一个简短的解释也很好。
谢谢。
谷歌搜索给了我验证表单字段的方法,但我已经可以构建它们了。我的问题是,哪些是可以安全包含的字符,哪些是在表单字段中排除的?具体来说,用户名和密码。
一个简短的解释也很好。
谢谢。
您需要排除数据中永远不会包含的所有字符。如果您的用户名/密码只能包含字母数字字符,您认为使用特殊字符是否有意义?
有一个正则表达式参考表也可能很有用。
如果您向我们提供有关您正在使用的语言的更多信息,我们可能会为我们提供更多帮助。祝你有美好的一天!
[更新] 有非常好的安全参考和OWASP 网站,它是任何网络安全相关主题的真正参考,请查看OWASP 备忘单。
#**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...
[/更新]
如果您正确清理输入和输出,则无需担心。
注意:我假设您使用 PHP 作为服务器端语言。
首先,将PDO
(或MySQLi
)与准备好的语句一起使用,以消除 SQL 注入的风险。
其次,任何将显示在您网站上的内容都应该针对 XSS 攻击进行清理(这样用户就不会注册 的用户名<script>doSomeEvilStuff()</script>
)。
基本上就是这样,如果你真的很偏执,你应该使用白名单(只允许某些字符)而不是黑名单(只禁止某些字符),因为总会有人找到绕过黑名单的方法,但没有可以绕过白名单。
对于用户名,我认为没有必要超出/[a-zA-Z0-9_.\s!$%^&*\-+=]/
您的想法。无论如何,不允许/[`<>(){}[]]/