我目前正在对所有用户密码进行哈希处理并将其放入我的数据库中。
现在我的一些用户希望我获取他们的密码,或者希望我在登录时做一些管理员工作。
我的问题是,我可以取消存储在数据库中的密码并进行检索吗?如果是这样的话?
蛋糕中是否有允许此功能的功能?
答案 0 :(得分:14)
没有。哈希不能通过设计逆转。你可以找到碰撞,但这并没有扭转哈希。
如果您需要管理员级访问权限,请将其构建到您的应用程序中。但是用户的密码不应该是可恢复的。如果某人获得了对您数据库的访问权限并且您的用户密码 可以恢复,那么您作为开发人员就会失败并且会损害您应用程序的每个用户。
答案 1 :(得分:3)
他们忘记了密码的事实意味着你可以给他们任何密码,所以我的建议就是简单地生成一个包含一个可发音的单词和一些数字的新密码,然后发送给用户;无论如何,他们之后可以更改密码。
通过这种方式,您不必在安全性上妥协,因为密码哈希不是首先要反过来的。
模仿用户是一项管理功能;如果你有适当的角色,你可以成为另一个用户,并以他们的方式做事。
答案 2 :(得分:2)
你不能“解开”某些东西,这就是为什么哈希是“安全的”(我们不会在这里讨论)。
现在,为什么您的用户想要取回密码?因为他们忘了他们而且无法登录?如果是这种情况,还有其他方法可以做“忘记密码,我会为你解决这个问题”,而不是试图解开某些东西。最常见的是放置一个“忘记密码”链接,要求提供电子邮件,发送带有重置密码链接的电子邮件,用户点击链接,重置创建随机密码(并哈希)替换旧密码和将新的随机传递发送给用户,用户使用随机传递,并在登录应用程序时将其更改为新传递。
如果您作为管理员想要做一些“充当”其他人的事情,您可以添加一个功能(只有您作为管理员才能访问),让您“充当”另一个人,而不知道他们的密码。这取决于你想要做什么的最佳解决方案,这应该是一个完全不同的问题,我认为。
但是,请仔细考虑这一点,这是非常危险的事情。如果有人可以执行此功能怎么办?没有其他解决方案吗?如果您这样做,攻击者与应用程序中每个帐户的完全访问权限之间的唯一区别就是您的管理员密码。如果您将密码哈希更改为密码加密(可以被反转并获得纯文本),那么一些“邪恶”将更容易解密密码。我知道客户端有最后一句话,但向他解释,做他想做的事情是非常不安全的。