c# - 在内部控制台应用程序中嵌入密码

标签 c# security passwords console-application internal

我即将在我们的一台服务器上发布一个控制台应用程序,由任务计划程序每天运行。根据某些条件,应用程序将通过 Office 365 向选定的用户发送电子邮件。当然,为了向用户发送电子邮件,我需要使用电子邮件帐户的凭据。

鉴于这是我们一台服务器上的内部应用程序,将用户名和密码嵌入代码中安全吗?如果不是,安全解决此问题的最佳实践是什么?

如果有帮助,这是我的电子邮件功能代码(用 C# 编写):

String userName = "<a href="https://stackoverflow.com/cdn-cgi/l/email-protection" class="__cf_email__" data-cfemail="583521763d3539313418372a3f39363122392c313736763b39" rel="noreferrer noopener nofollow">[email protected]</a>";
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 中,以便在密码过期时可以轻松更改它们,否则您必须重新编译并重新部署整个解决方案。

理想情况下,如果您想尽可能安全,您应该研究可用于对配置文件进行加密的各种方法。简单搜索 c# 加密配置 就有足够的 Material 帮助您入门。

关于c# - 在内部控制台应用程序中嵌入密码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47635106/

相关文章:

c# - 如何更改方法签名/属性以匹配给定的执行示例?

c# - 用户控件中的数据列表在尝试分配数据源时抛出空引用异常

java - 如何在Android上为JWE从字符串生成公钥?

security - 如何判断 IE 认为是 "nonsecure"的文件是什么?

c++ - 如何在 C++ 中访问 Ubuntu key 环?

python - 使用没有RSA key 的python ssh

c# - 在哪里可以提交对 C# 语言新功能的请求?

c# - 如何使用 DataAnnotations 检查属性是否仅匹配字符串数组

image - 检索 instagram 图像 - 获取访问被拒绝的消息

java - 如何在 Java 程序中拦截 SSH 密码请求