gpt4 book ai didi

c# - 从桌面应用程序使用时的PasswordVault安全性

转载 作者:行者123 更新时间:2023-12-02 18:05:18 24 4
gpt4 key购买 nike

我想使用Windows.Security.Credentials.PasswordVault在我的桌面应用程序(基于 WPF)中安全地存储用户的密码。我设法使用此 MSDN article 访问此 Windows 10 API 。

我做了一些实验,看来从一个桌面应用程序(不是 native UWP 应用程序)写入到 PasswordVault 的任何数据都可以从任何其他桌面应用程序读取。甚至用 Desktop Bridge 打包我的桌面应用程序技术并因此拥有包标识并不能修复此漏洞。

有什么想法可以解决这个问题并能够安全地存储应用程序的数据以免受其他应用程序的影响吗?

更新:相比 DPAPI,PasswordVault 似乎没有增加额外的安全性。 。此案以否定结果结案。

最佳答案

(这是我对你的帖子的理解)

使用此类 API 时,没有真正的方法可以阻止桌面应用程序之间的数据访问 http://www.hanselman.com/blog/SavingAndRetrievingBrowserAndOtherPasswords.aspx讲述了更多相关内容。您可能只想解密您的信息。

内存访问限制很困难,用户执行的代码总是可以被用户检索,因此很难限制这一点。

您是否考虑过使用 Windows 数据保护 API: https://msdn.microsoft.com/en-us/library/ms995355.aspx

直接从源头获取DPAPI 是一项易于使用的服务,将使必须为密码和私钥等敏感应用程序数据提供保护的开发人员受益

WDPAPI 使用操作系统和 Triple DES 生成的 key 来加密/解密您的数据。这意味着您的应用程序不必生成这些 key ,这总是好的。

您还可以使用 Rfc2898DeriveBytes 类,它使用伪随机数生成器来解密您的密码。它比大多数解密器更安全,因为没有实际的方法可以从结果返回到密码。这仅对于验证输入密码而不是再次检索它真正有用。我自己从未真正使用过这个,所以我无法帮助你。

https://msdn.microsoft.com/en-us/library/system.security.cryptography.rfc2898derivebytes(v=vs.110).aspx

另请参阅这篇文章,它提供了比我更好的解释。 How to securely save username/password (local)?

如果我在某种程度上误解了这个问题,请告诉我,我会尝试更新答案。

请注意,现代/都市应用程序不存在此问题,尽管仍然可以通过其他方式访问它们。

关于c# - 从桌面应用程序使用时的PasswordVault安全性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50583702/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com