随着我继续构build越来越多的网站和Web应用程序,我经常被要求存储用户的密码,以便在用户遇到问题时可以检索用户的密码(通过电子邮件发送一个被遗忘的密码链接,电话等)当我可以对付这种做法苦涩的时候,我做了很多“额外的”编程,使密码重置和pipe理协助成为可能,而不需要存储他们的实际密码。 当我不能对抗(或不能赢)时,我总是以某种方式对密码进行编码,至less它不会作为明文存储在数据库中 – 尽pipe我知道如果我的DB被黑客入侵罪魁祸首并不需要太多的破解密码,这让我感到不舒服。 在一个完美的世界里,人们会经常更新密码,而不是在许多不同的网站上复制它们,不幸的是,我知道很多人有相同的工作/家庭/电子邮件/银行密码,甚至在他们需要帮助时也可以自由地给我。 如果我的数据库安全程序出于某种原因失败,我不希望成为他们财务危机的责任人。 在道义上和道德上,我觉得对于一些用户保护他们的生计负有责任,即使他们不那么尊重地对待他们。 我确信有很多途径可以为腌制和不同的编码select提供方法和论据,但是当你需要存储它们时,是否有一个“最佳实践”? 在几乎所有的情况下,我使用的是PHP和MySQL,如果这在我处理细节的方式上有所不同的话。 附加信息赏金 我想澄清一下,我知道这不是你想要做的事情,在大多数情况下拒绝这样做是最好的。 但是,我不想寻求采取这种方法的优点,我正在寻找采取这种方法的最佳步骤。 在下面的一个注释中,我指出,当被要求执行安全的密码恢复程序时,主要针对老年人,精神障碍者或非常年轻的网站可能会让人感到困惑。 尽pipe在这种情况下,我们可能会发现它简单而平凡,但有些用户需要服务技术人员帮助他们进入系统或直接通过电子邮件发送/显示给他们。 在这样的系统中,如果用户没有获得这个级别的访问帮助,那么这些人口统计学的损耗率可能会阻碍应用程序,所以请回答这样的设置。 谢谢大家 这是一个有趣的问题,有很多争论,我很享受。 最后,我select了一个答案,既保留密码的安全性(我将不必保持纯文本或可恢复的密码),但也使我指定的用户群login到系统没有我发现的主要缺点正常的密码恢复。 和往常一样,大概有5个答案,我想标记为不同的原因是正确的,但是我必须select最好的答案 – 其余的答案都是+1。 感谢大家! 此外,感谢Stack社区中的每个人都为此问题投了赞成票并将其标记为最爱。 我以百分之一百的票数作为赞美,希望这次讨论能够帮助其他人也有同样的担忧。