我正在尝试制作一个简单的应用程序来发送电子邮件。我使用MailMessage
和SmtpClient
类。SmpClient
需要登录名和密码才能工作。
- 使用简单字符串中的登录名/密码编译应用程序是否安全?
- 这是否可以拆卸它并获取密码?
- 如何对潜在的攻击者隐藏它?
- 这可以使用登录名/密码发送电子邮件吗?
我正在尝试制作一个简单的应用程序来发送电子邮件。我使用MailMessage
和SmtpClient
类。SmpClient
需要登录名和密码才能工作。
是的,将密码以纯文本形式存储在应用程序的任何位置都是不安全的。不要这样做!
相反,您应该将加密的密码存储在 App.config 文件中(或配置文件中的其他位置,例如 machine.config):
加密和解密 ApplicationConfigSection
或者,您可以在运行时向用户询问凭据。
如果您想避免显式提供密码,您可以通过当前登录用户的 Windows 身份验证进行身份验证。为此,您可以SmtpClient.UseDefaultCredentials
用于发送邮件。当然,这仅在 SmtpServer 识别用户 Windows 凭据时才有效。
如果您想防止中间人攻击和数据包嗅探,您应该使用 SSL 来传输身份验证数据。您可以通过在配置中启用 SSL或仅自己设置属性来做到这一点:SmtpClient.EnableSsl
. (.NET >= 4.0)