为什么进行用户注册必须是常规的?

时间:2010-01-27 09:43:21

标签: php mysql html regex registration

我正在编写用户注册。但是,我发现了一个限制来自示例代码的'用户名'的字符,例如'。',''',' - '被接受,没有空格或其他空白等等。

这些限制是否必要?

我正在使用MySQL + PHP。如果我采用以下几种方式:

  
      
  1. 将列的排序规则更改为“utf8_general_ci”;
  2.   
  3. 将函数'mysql_escape_string'或'mysql_real_escape_string'拉入PHP;
  4.   
  5. 创建关于用户名< - >的关系表userID('username'是客户端输入的内容,userID是INT编号。)。除了在数据库中使用“userID”外,“用户名”仅显示在HTML中。
  6.   

我真的需要正则表达式吗?

感谢您的帮助。


PS:我是中国人,所以需要中文字符。

3 个答案:

答案 0 :(得分:1)

这些限制不是必需的,但您必须确保该用户名是有效且唯一的字符串(带或不带正则表达式)

当谈到从字符串和mysql注入中删除易受攻击的字符时,我建议使用Mysqli扩展名来准备语句,它会处理转义并且你不必逃避每个字符串手动

答案 1 :(得分:1)

由于这是一个网络应用,除了使用mysql_real_escape_string之外,我还建议剥离或禁止任何可以构建HTML的内容。通常禁止“<”和“>”就够了。

您真的不希望某些用户输入他们的姓名:

<script src=http://malicious/script.js></script>

另一种解决方案是在向您的网页输出数据时使用htmlspecialchars

答案 2 :(得分:0)

这取决于你,但在我看来使用mysql_real_escape_string应该没问题(而且我很偏执)

相关问题