SKu*_*SKu 8 php mysql passwords
我有用户登录但用户可以使用不区分大小写的方式登录意味着如果您的密码是'test',那么用户可以使用'TEST'密码登录.
我想避免在我的密码字段上进行此类型身份验证.
Boo*_*eus 14
最简单的方法是在查询中使用binary关键字:
SELECT /*fields*/ FROM table WHERE /* where clause */ BINARY password = "userpassword"
Run Code Online (Sandbox Code Playgroud)
要么
在PHP代码中使用strcmp:
如果您存储我推荐的散列或加密密码,您也可以使用它.
我想你是在清楚地存储密码.这不仅非常不安全,在大多数情况下也是不必要的.我的建议是将密码存储在两列中,例如:
password_salt VARCHAR(16)
password_hash VARCHAR(40)
Run Code Online (Sandbox Code Playgroud)
在存储新密码之前,请获取user($clear_password)提供的密码,创建随机字符串($salt)并使用它们来创建哈希(sha1sum($salt . $clear_password).存储salt和hash,并丢弃清除密码.
要验证密码,请检索给定用户的存储salt,生成散列并查看它是否与DB中的散列匹配.
这种技术称为盐渍密码.