如何在数据库中安全存储密码?

时间:2015-01-28 19:13:59

标签: php node.js security encryption

我想知道我公司的创建密码存储工具,基于PHP或NodeJS。目前我们在KeePass中保留密码,但在员工之间共享密码并不好。

我们需要保留密码,而不是哈希。我只是在寻找如何以安全的方式存储密码的良好实践。如何加密密码?是否有任何开放的工具来加密密码?

1 个答案:

答案 0 :(得分:1)

这样做不适合新手/胆小者。

为了使系统安全,密码应保存在任何无法访问的人都无法读取的形式中。在应用程序中存储(完整)访问方法意味着数据不安全。因此,密码需要以某种可逆加密方式存储,但密钥不得存储在服务器上。

不幸的是,您需要知道密钥才能将加密数据放入数据库。使用对称加密(加密和解密的密钥相同),如果每个人都可以访问所有密码,那么问题并不是太多 - 但是非常的价值有限,在大多数情况下会破坏安全。

在设置或更新密码时,解决方案是使用非对称密码使用应具有访问权限的每个用户的公钥对其进行加密 - 从而生成加密密码的多个副本,每个密码只能使用用户的私钥。

因此,每个密码将由一系列记录表示,每个记录对应一个记录,包含相关的用户身份,加密的密码,初始化向量和密码的目标帐户。您还需要为每个用户保留公钥,并为他们提供一种机制,将加密数据及其私钥放在一起 - 通过电子邮件发送数据是一种解决方案。允许用户上传他们的私钥不是一个好主意。您可以将私钥存储在浏览器的本地存储上,并在Javascript中解密。