为什么要进行用户注册必须是正常的?
问题描述:
我在编写用户注册。但是,我发现从样本代码限制为'用户名'的字符,例如'。',''',' - '被接受,没有空格或其他空白等。为什么要进行用户注册必须是正常的?
这些限制是否必需?
我正在使用MySQL + PHP。如果我采取以下几种方法:
- 变化列“utf8_general_ci”的整理;
- 将函数'mysql_escape_string'或'mysql_real_escape_string'拉入到PHP中;
- 创建一个关于用户名< - > userID的关系表(“用户名”是客户端输入的内容,userID是一个INT号。)。以及只在数据库中使用'userID',但'用户名'只能以HTML格式显示。
我真的需要正则表达式吗?
谢谢你的帮助。 PS:我是中国人,所以需要中文字符。
答
由于这是一个网络应用,除了使用mysql_real_escape_string
之外,我还建议剥离或禁止任何可以构建HTML的内容。一般禁止“<”和“>”就足够了。
你真的不希望一些用户输入他们的名字是:
<script src=http://malicious/script.js></script>
的替代解决方案是将数据输出时,你的页面中使用htmlspecialchars
。
答
这是你的,但使用mysql_real_escape_string
应该是在我看来罚款(和我很偏执)
答
这些限制都没有neccessary,但是你必须保证,该用户名是有效且唯一字符串(带或不带正则表达式)的字符串和MySQL注入
当谈到剥离弱势字符我会建议使用Mysqli扩展准备的语句,这需要逃避的照顾和你没有逃跑每字符串手动