我一直在尝试Windows.Security.Credentials.PasswordVault
作为存储应用程序密码的一种方式。
阅读类文档和UWP 文档,我假设保管库有一些识别应用程序的方法,因此特定应用程序只能检索它保存在保管库本身中的凭据:
应用程序和服务无权访问与其他应用程序或服务关联的凭据。
我无法确认这是否有效,因为我编写的应用程序实际上能够访问我的另一个应用程序保存在保险库中的凭据,包括密码。由于该机制不需要任何证书或应用程序 ID,我很好奇它是如何确保上述属性的。
看着 SO,我发现这个非常相似,但尚未回答的问题。它让我更加困惑,因为它的提问者说:
看来,即使第二个应用程序使用的密钥与第一个应用程序用于保存数据的密钥相同;第二个应用程序无法检索该数据。这很好。
就我而言,第二个应用程序可以毫无问题地读取第一个应用程序保存的保险库凭据,密码和所有内容。不仅如此,对于我保存了密码自动填充信息的网站,我还可以读取 Internet Explorer 存储的所有密码。关于这个问题的评论证实,如果两个应用程序都由同一用户执行,则没有机制可以阻止一个应用程序访问另一个应用程序的存储凭据,这与我对 API 文档的理解直接矛盾。
我一定是误解了 PasswordVault 的安全方面是如何工作的。如何使用它来保护凭据,以便它们只能由创建它们的应用程序使用?
关于我的环境的信息:
- 在 Windows 10 上运行的应用程序
- API 平台 10.0(也用 8.0 测试过)
- 应用程序在没有提升权限的情况下执行