【发布时间】:2018-05-18 00:30:48
【问题描述】:
我即将在我们的一台服务器上发布一个控制台应用程序,以便由任务调度程序每天运行。根据某些条件,应用程序将通过 Office 365 向选定的用户发送电子邮件。当然,为了向用户发送电子邮件,我需要使用电子邮件帐户的凭据。
鉴于这是我们其中一台服务器上的内部应用程序,将用户名和密码嵌入代码中是否安全?如果没有,安全解决此问题的最佳做法是什么?
如果有帮助,这是我的电子邮件功能代码(用 C# 编写):
String userName = "my.email@organization.ca";
String password = "myPassword";
MailMessage msg = new MailMessage();
msg.To.Add(new MailAddress(user.getEmail()));
msg.From = new MailAddress(userName);
msg.Subject = "My Subject";
msg.Body = "My message";
msg.IsBodyHtml = true;
SmtpClient client = new SmtpClient();
client.Host = "mail.office365.com";
client.Credentials = new System.Net.NetworkCredential(userName, password);
client.Port = 587;
client.EnableSsl = true;
client.Send(msg);
编辑:我应该补充一点,只有管理员才能访问此特定服务器。
【问题讨论】:
-
你为什么不在 App.Config 中加密密码并从那里读取.. 谷歌搜索如何加密 .Confg 部分比硬编码更容易它还重构你的代码,以便它利用
Auto Disposing of Objects但使用using() { }构造 -
不,这不安全,在密码泄露的情况下也不灵活。这些值应在安装/首次运行时作为配置收集。
-
澄清一下,只有管理员有权登录到这个特定的服务器。
标签: c# security passwords console-application internal