在我的应用程序中,我必须重复调用需要验证的webservices。用户不想重复输入验证信息(用户名和密码)。
是否有一种安全的方法来存储密码,至少在应用程序运行的会话长度内,因此用户只需输入一次数据?
目前我将密码保存在内存中并在输入后对其进行加密,并在用于服务调用时对其进行解密。但我觉得有点不舒服。 这是处理这类数据的推荐方法吗?
如何在数据库中存储密码以在多个会话中使用它? 是否有推荐的处理方式?我听说过bcrypt和pbkdf2。但它们仅用于散列目的并比较输入的密码,而不是再次使用“解密”密码。
或者使用外部密码缓存是一种更好的方法,例如keepass(或任何可以使用的密码缓存)。
答案 0 :(得分:2)
对于内存存储,请使用在内部使用SecureString的SecureString类或NetworkCredentials。
对于持久存储,使用Data Protection API加密密码。它将使用只有此计算机上当前Windows用户可访问的密钥对其进行加密。