2

对于我正在处理的应用程序,我想存储用户输入的密码,以在我的数据库遭到破坏时提供一定的安全性,但仍允许外部守护程序访问密码的明文版本。(它将用于 IMAP 或 POP 登录)。

将密码存储在数据库中的最佳方法是什么,以便无需用户的原始密码即可恢复。(未使用用户密码加密)

我在想也许是公钥加密,前端将使用公钥加密密码以存储在数据库中,然后访问守护进程将使用私钥解密密码。

编辑:我需要明文密码,以便它们可用于登录其他可能不支持 OAuth 之类的网络服务

4

1 回答 1

1

您应该对它们进行加密,最好使用非对称加密。理想情况下,应用程序(Web 应用程序)加密它们(w 公钥),守护程序解密它们(w 私钥),应用程序、守护程序和数据库位于不同网络区域的不同机器上。

理想情况下,私钥存在于连接到守护程序服务器的硬件安全模块中。YubiHSM 约为 500 美元。

请注意,这只适用于您需要发送给另一方的密码。如果密码用于通过您的系统对用户进行身份验证,那么应该对它们进行散列(并加盐和加盐)。

于 2012-06-30T20:58:44.407 回答