繁体   English   中英

如何使用区分大小写的MySQL密码字段?

[英]How to use the case-sensitive for MySQL password field?

我具有用户登录名,但用户可以使用不区分大小写的方式登录。这意味着如果您的密码为“ test”,则用户可以使用“ TEST”密码登录。
我想避免在我的密码字段中进行这种类型的身份验证。

最简单的方法是在查询使用中使用二进制关键字:

SELECT /*fields*/ FROM table WHERE /* where clause */ BINARY password = "userpassword"

要么

在您的PHP代码中使用strcmp

如果您存储我建议的哈希密码或加密密码,也可以使用此密码。

我想您是在清楚地存储密码。 这不仅不安全,而且在大多数情况下也没有必要。 我的建议是将密码存储在两列中,例如:

password_salt VARCHAR(16)
password_hash VARCHAR(40)

在存储新密码之前,请使用用户提供的密码( $clear_password ),创建一个随机字符串( $salt ),然后使用两者创建一个哈希( sha1sum($salt . $clear_password )。并丢弃清除密码。

要验证密码,请为给定用户检索存储的盐,生成哈希并查看它是否与数据库中的哈希匹配。

此技术称为盐腌密码

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM