C# 应用商店 Email/Password 安全/非硬编码

C# Application Store Email/Password Safely / Not Hardcoded

我目前正在开发一个 c# 应用程序,我必须在其中向某种请求存储发送电子邮件。我找到了几种用 c# 代码发送邮件的方法,每一种都需要邮件和密码(这完全有道理)。 但是我不想在我的应用程序中对邮件或/和密码进行硬编码。我认为这将是您在这种情况下可以做的最糟糕的事情。

有没有人知道如何在没有任何网络服务的情况下安全且易于访问地存储电子邮件和密码

您可以将密码存储在如下 webconfig/AppConfig 文件中,以便您轻松访问。

<appSettings>
 <add key="UserName" value="*******" />
 <add key="Password" value="*******" />
</appSettings>

您可以访问这些字段,如下所示,您可能需要添加对 System.Configuration;

string userName= ConfigurationManager.AppSettings["UserName"];
string password= ConfigurationManager.AppSettings["Password"];

根据你的问题,我猜你正在创建一个 console/desktop 应用程序? 一个选项可能是将 username/password 存储在可以加密的 app.config 中的 appSettings 中。请参阅 Jon Galloway's 个选项来解决这个问题。

我假设您的应用程序是针对外部用户的(即不是您自己公司内部服务器上的服务 运行),并且您对凭据进行硬编码的主要担忧是必须更新所有实例凭据更改时您的应用程序?我会在评论中问你,但我还没有声誉。

您可以将凭据以加密形式存储在某处,例如一个数据库,然后在内存中解密它们(你可以搜索这个,有很多可用的示例实现)。

当然,有人可能会反汇编您的应用程序并发现您的解密方法并获得对凭据的访问权限,因此根据您是否认为这是一种风险,您可以考虑使用某些第三方来保护您的代码免遭反汇编软件。

只要您的代码在用户计算机上运行,​​它就永远无法得到完全保护,但与以纯文本形式存储凭据相比,它会大大增加获取凭据所需的工作量。

但是,我不清楚您为什么要避免使用网络服务?这将是将发送电子邮件的问题与您的应用程序代码分开的好方法。 然后您可以完全更改实现,而客户端应用程序不必担心它。