2

在我的应用程序中,我必须重复调用需要身份验证的 Web 服务。用户不想重复输入认证信息(用户名和密码)。

是否有一种安全的方法可以至少在应用程序运行的会话期间存储密码,因此用户只需输入一次数据?

目前我将密码保存在内存中,输入后加密,用于服务调用时解密。但我对此感到有些不舒服。这是处理此类数据的推荐方法吗?

将密码存储在数据库中以在多个会话中使用如何?有推荐的处理方法吗?我听说过 bcrypt 和 pbkdf2。但它们仅用于散列目的并将输入的密码与输入的密码进行比较,而不是再次使用“解密”密码。

或者使用外部密码缓存是否是更好的方法,例如keepass(或任何可以使用的)。

4

1 回答 1

2

对于内存存储,请使用 SecureString 类或NetworkCredentials,它们在内部使用 SecureString。

对于持久存储,请使用Data Protection API加密密码。它将使用只有这台计算机上的当前 Windows 用户可以访问的密钥对其进行加密。

于 2013-03-26T14:50:02.873 回答