API 密钥可以通过 windows 桌面应用程序安全地 stored/retrieved 吗?
Can an API key be securely stored/retrieved by a windows desktop app?
有没有办法在 windows 中安全地存储和检索 API 密钥?
例如,(c#) 桌面应用程序是否可以使用 windows service/api 来存储和检索密钥?
如果密钥必须放在客户端机器上,它可以被读取出来。您使用哪种语言或哪种存储方式都无关紧要。最后,您必须将该 API 密钥发送到您的服务器以验证您自己,此时有人可以使用像 Fiddler 这样的代理来检查数据并记录该 API 密钥。
要解决此问题,您需要为您的客户提供一个(网络)界面,他们可以在其中登录并管理他们的 API 密钥,以便他们可以请求新密钥或撤销旧密钥。在这种情况下,您的桌面工具还需要一些输入掩码,用户可以在其中输入该密钥(并将其存储在注册表或文件系统中)。
通过使用这种方法,每个客户都可以使用自己的密钥,如果它被泄露,您(或客户)只需撤销这个密钥,而不会影响其他客户。
很抱歉回答我自己的问题,但看来 Windows 凭据管理器和底层数据保护 API 正是为此目的而设计的。它与 Windows 用来存储各种密码的保险库相同。
它有一个很好的 c# API.. https://docs.microsoft.com/en-us/dotnet/standard/security/how-to-use-data-protection
这里回答得更全面..
有没有办法在 windows 中安全地存储和检索 API 密钥?
例如,(c#) 桌面应用程序是否可以使用 windows service/api 来存储和检索密钥?
如果密钥必须放在客户端机器上,它可以被读取出来。您使用哪种语言或哪种存储方式都无关紧要。最后,您必须将该 API 密钥发送到您的服务器以验证您自己,此时有人可以使用像 Fiddler 这样的代理来检查数据并记录该 API 密钥。
要解决此问题,您需要为您的客户提供一个(网络)界面,他们可以在其中登录并管理他们的 API 密钥,以便他们可以请求新密钥或撤销旧密钥。在这种情况下,您的桌面工具还需要一些输入掩码,用户可以在其中输入该密钥(并将其存储在注册表或文件系统中)。
通过使用这种方法,每个客户都可以使用自己的密钥,如果它被泄露,您(或客户)只需撤销这个密钥,而不会影响其他客户。
很抱歉回答我自己的问题,但看来 Windows 凭据管理器和底层数据保护 API 正是为此目的而设计的。它与 Windows 用来存储各种密码的保险库相同。
它有一个很好的 c# API.. https://docs.microsoft.com/en-us/dotnet/standard/security/how-to-use-data-protection
这里回答得更全面..