安全地发送电子邮件

apo*_*pse 7 c# security email smtpclient winforms

我正在尝试制作一个发送电子邮件的简单应用程序.我用MailMessageSmtpClient上课.SmpClient需要登录名和密码才能工作.

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

mag*_*tic 7

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

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

加密和解密ApplicationConfigSections

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

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


如果您希望免受中间人攻击和数据包嗅探,则应使用SSL传输身份验证数据.您可以通过在配置中启用SSL或仅自行设置属性来执行此操作:SmtpClient.EnableSsl.(.NET> = 4.0)