在处理记住我功能(对于用户名和密码凭据)时,我注意到可以恢复将 UseSystemPasswordChar 属性设置为 true 时隐藏的密码。下面的屏幕截图示例:
我还注意到,虽然很多应用程序都会遇到同样的问题,但并非所有应用程序都会遇到这种情况,所以我认为必须有办法避免这种情况。
问题是,我需要采取什么方法来确保无法使用此方法检索凭据?
提前致谢。
在处理记住我功能(对于用户名和密码凭据)时,我注意到可以恢复将 UseSystemPasswordChar 属性设置为 true 时隐藏的密码。下面的屏幕截图示例:
我还注意到,虽然很多应用程序都会遇到同样的问题,但并非所有应用程序都会遇到这种情况,所以我认为必须有办法避免这种情况。
问题是,我需要采取什么方法来确保无法使用此方法检索凭据?
提前致谢。
保存密码后,当您再次向用户显示旧密码时,不要将旧密码放回框中。您放置一些占位符文本,如果文本框与您使用存储的密码的占位符文本匹配。
至于其他一些技巧,如果可能的话,将密码的哈希值而不是密码本身存储在内存中。您可以使用 Process Explorer 之类的字符串实用程序在内存中查找密码字符串。
如果无法存储哈希而不是密码(例如,如果您连接到其他服务并且需要提交明文密码),您可以使用SecureString并且这将保持内存中的字符串加密。
至于长期安全地存储密码,而不仅仅是在内存中,请在将字符串写入硬盘驱动器之前使用ProtectedData类对其进行加密,并将DataProtectionScope设置为CurrentUser
只有登录用户才能获取数据。
请记住:您不能让某人无法找到存储的密码,但您可以显着提高获取密码的难度。