根据Microsoft Do not use resource files to store passwords, security-sensitive information, or private data.
是否存在可以安全存储密码的文件?我使用的第三方API需要通过我设置的电子邮件和密码进行身份验证。我不想将值硬编码到登录函数中,因为如果有人对可执行文件进行反编译,这种情况就会暴露出来。
是否存在一个文件,我可以在其中写入这些详细信息,以便C#项目可以为我加密,并且我可以通过编程方式进行访问?
答案 0 :(得分:1)
我认为您不能将此类密码直接嵌入第三方api到exe应用程序中,也不能将其提供给用户并感到安全。甚至加密的配置文件也必须在某个时候解密。
那表示您通常在自己的服务器上创建自己的API,并拥有中间件,在中间件中只能在服务器上拥有密钥。因为如果需要更改密码,您将如何更改密码?使用api中间件时,您可以更改该密码,并且api的最终用户将可以使用您具有的任何身份验证方案登录。当此第三方api引入重大更改时,您提供的应用程序将中断,并且您将不得不更新所有安装,当您拥有中间件时,可以在中间件中进行修复。
答案 1 :(得分:1)
永远不要在文件中存储任何种类的凭据信息。就像将它们存储在资源文件中一样糟糕。我怀疑通过文件,您的意思是建议用于保存凭据的存储。有一个名为凭证管理的Nuget库:
http://nuget.org/packages/CredentialManagement/
该库只是用于凭据管理的Windows API调用的包装。 UWP应用程序SDK已内置相同的库。
这是一些有关如何使用代码的代码
https://geoffhudik.com/tech/2017/09/14/console-app-credentials-and-the-windows-credential-manager/