安全地发送电子邮件

时间:2013-02-27 15:33:40

标签: c# winforms security email smtpclient

我正在尝试制作一个发送电子邮件的简单应用程序。我使用MailMessageSmtpClient类。 SmpClient需要登录名和密码才能运行。

  • 使用简单字符串中的登录名/密码编译应用程序是否安全?
  • 这可以反汇编这个,并获得密码吗?
  • 如何将其隐藏起潜在的攻击者?
  • 是否可以使用登录名/密码发送电子邮件?

1 个答案:

答案 0 :(得分:6)

是的,在应用程序的任何位置以明文形式存储密码是不安全的。不要这样做!

相反,您应该将密码 加密 存储在App.config文件中(或配置文件中的其他位置,例如machine.config):

Encrypting and Decrypting ApplicationConfigSections

或者,您可以在运行时向用户询问凭据。

如果您想避免明确提供密码,可以通过Windows身份验证对当前登录的用户进行身份验证。为此,您可以使用SmtpClient.UseDefaultCredentials发送邮件。当然,这仅在SmtpServer识别用户窗口凭证时有效。


如果您希望免受中间人攻击和数据包嗅探,则应使用SSL传输身份验证数据。您可以enabling SSL in the configuration执行此操作,也可以自行设置属性:SmtpClient.EnableSsl。 (.NET> = 4.0)