假设我需要为一些用户存储第三方网站的登录信息,我将如何进行呢?
由于我是登录到第三方网站,我需要密码的纯文本,而不是散列。而不是,该网站没有提供任何API。
此外,我使用的服务器对其上存储凭据的人是可访问的,因此他们至少可以获得一个明文/密文对,即他们自己的。
在这两种情况下,是否存在在服务器上存储用户凭据的方法,或者是否应该每次用户登录时都请求它们?
发布于 2011-08-07 21:29:15
您可以使用从用户密码(到您的站点)中派生的一些密钥对它们进行加密。
当然,这是假设您以纯文本(或任何形式总是相同的形式)获得用户的密码,因此您需要与用户进行加密连接。不允许任何非SSL登录。
您可以使用一些密钥派生函数(如PBKDF或bcrypt )从密码派生加密密钥(如果使用salt,请确保salt与用于密码检查的salt不相同)。您还可以在这里使用一些服务器机密,但是如果您说一些潜在的攻击者无论如何都有(读)访问服务器的权限,这将不会真正提高安全性。
然后,使用AES等标准对称加密算法对第三方网站存储的登录信息进行加密/解密。
当然,你也应该使用加密连接到这个第三方网站.
发布于 2011-08-11 00:49:42
在我看来,LastPass使用的方法是相当理想的。它们有一组密码,这些密码在您的计算机上使用JavaScript和您提供的密码加密。您将加密的数据发送给LastPass,后者将其存储在其服务器上。然后,当您想要访问您的密码时,您将相同的加密文本发送回用户,用户在他们的机器上解密它。
最终的结果是,你永远不知道他们的密码,但你为他们储存了密码。
https://crypto.stackexchange.com/questions/345
复制相似问题