将用户密码加密/哈希到数据库中

Mac*_*ast 3 php mysql

对于在发布之前在表单中输入的用户密码,我只是这样做

<?php
   $pass=crypt($_POST['memberpwd']);   
?>
Run Code Online (Sandbox Code Playgroud)

但是,如果用户可能要求,我怎么能在以后获得该密码的明文?谢谢.

编辑:我发现如何使用PHP加密数据库中的密码数据?http://www.securityfocus.com/blogs/262,但我只想在更基础的层面上了解这一点,以了解它的实际工作方式.

Chr*_*heD 9

始终只使用哈希值(密码随机生成的盐)将密码存储在数据库中(谷歌搜索这些术语与PHP结合应产生一些有用的结果).

您永远不会恢复密码的纯文本版本,您可以在用户点击您只能根据请求自动通过电子邮件发送的唯一推荐网址时为用户提供选择新密码的方法.

(非常基本的安全性).

编辑:

我会解释为什么你需要盐.假设有人破坏了您的数据库,并且该user表具有simple(例如MD5)密码哈希值.他(或她)现在可以使用简单的密码组合(例如)简单地对整个表发起字典攻击select * from users where pw_hash = ....如果您使用随机生成的(但存储的)盐来密码散列,那么这种强制攻击会以指数级的方式难以利用.