PHP-我在哪里哈希密码?
作者:互联网
我正在使用MVC,我想知道在什么时候哈希用户密码:
>发送到服务器之前(查看)
>在服务器中,当我设置对象字段(模型)时
>在服务器中,当我将对象发送到控制器(controller)时
>在服务器中,当我准备语句时(控制器)
>在数据库中,
例如在语句中使用“设置密码= sha256(:password)”
我有点困惑,在创建对象并设置字段“ password”时,我一直在对密码进行哈希处理,但是我读过一些地方并不足够安全.我不确定.
解决方法:
>在视图中:这太高了.几乎可以肯定,您的应用程序中将有多个使用密码执行操作的视图(两个简单的视图:登录表单和密码更改表单),并且在视图中使用密码哈希会导致重复.
>在数据库中:太低.数据库永远都不会看到明文密码.在某些情况下,这样做可能最终会通过网络发送纯文本密码,在错误消息中显示它们或将其写入数据库日志.而且,数据库支持的大多数哈希函数过快,以至于无法安全存储密码.
>在模型中:恰到好处.我建议在用户对象上实现类似于以下内容的方法:
$user->setPassword($password) # sets password to specified value
$user->passwordEquals($password) # returns true if value passed in matches the password
请注意,这些方法都没有公开密码或密码的存储方式,而这只是对象的实现细节.
标签:password-encryption,php 来源: https://codeday.me/bug/20191031/1975289.html