我目前正在开发一个c#应用程序,我必须在其中发送电子邮件到某种请求存储。我找到了几种用c#代码发送邮件的方法,每一种方法都需要邮件和密码(这很有道理)。 但是我不想在我的应用程序中对邮件或/和密码进行硬编码。我认为这将是你在这种情况下最糟糕的事情。
有没有人知道如何安全地存储电子邮件和密码,并且可以轻松访问,无需任何网络服务。
答案 0 :(得分:1)
根据您的问题,我猜测您是否正在创建控制台/桌面应用? 一个选项可能是将用户名/密码存储在app.config中的appSettings中,该appSet可以加密。请参阅Jon Galloway's选项以了解相关信息。
答案 1 :(得分:1)
我假设您的应用程序是针对外部用户的(即不是在您自己的内部公司服务器上运行的服务),并且您对硬编码凭据的主要担心是必须在更新应用程序的所有实例时凭证有变化吗?我在评论中问你,但我还没有声誉。
您可以在某处以加密形式存储凭据,例如一个数据库,然后在内存中解密它们(你可以只搜索它,有很多可用的实例)。
当然,有人可以反汇编您的应用程序并发现您的解密方法并获得对凭据的访问权限,因此根据您是否将此视为风险,您可以考虑使用某些第三方软件保护您的代码免遭反汇编。
只要您的代码在用户计算机上运行,它就永远不会受到完全保护,但与以纯文本格式存储凭据相比,它会大大增加获取凭据所需的工作量。
但是,我不清楚你为什么要避免使用网络服务?这将是分离从应用程序代码发送电子邮件的关注的好方法。 然后,您可以完全更改实现,而无需客户端应用程序担心它。
答案 2 :(得分:0)
您可以将密码存储在webconfig / AppConfig文件中,如下所示,以便轻松访问。
<appSettings>
<add key="UserName" value="*******" />
<add key="Password" value="*******" />
</appSettings>
您可以访问以下这些字段,您可能需要添加引用 System.Configuration;
string userName= ConfigurationManager.AppSettings["UserName"];
string password= ConfigurationManager.AppSettings["Password"];