是否有文件在C#项目中存储重要数据?

时间:2018-11-08 18:43:28

标签: c# visual-studio

根据Microsoft Do not use resource files to store passwords, security-sensitive information, or private data.

是否存在可以安全存储密码的文件?我使用的第三方API需要通过我设置的电子邮件和密码进行身份验证。我不想将值硬编码到登录函数中,因为如果有人对可执行文件进行反编译,这种情况就会暴露出来。

是否存在一个文件,我可以在其中写入这些详细信息,以便C#项目可以为我加密,并且我可以通过编程方式进行访问?

2 个答案:

答案 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/