我正在尝试使用Gmail电子邮件发送多封电子邮件。
MailMessage mail = new MailMessage();
SmtpClient SmtpServer = new SmtpClient("smtp.gmail.com");
mail.From = new MailAddress("gmail email ssl server");
mail.To.Add("email to send to");
mail.Subject = "Test Mail 2.0";
mail.IsBodyHtml = true;
mail.Body = body;
SmtpServer.Port = 587;
SmtpServer.Credentials = new System.Net.NetworkCredential("email@email.com", "My Password");
SmtpServer.EnableSsl = true;
SmtpServer.Send(mail);
它运行良好,但是如您所知,C#代码是可检索的。您知道gmail将接受为密码的加密方法吗? 因此,我可以只在密码中存储密码,我的电子邮件仍然容易受到攻击,但比现在少得多。
答案 0 :(得分:1)
当您考虑它时,就像浏览器存储密码的方式一样吗?直到February 2020为止,Google都认为普通DPAPI足以满足要求。当然,正如链接文章所提到的,窃取密码的恶意软件变得很容易。从技术上讲,这并不是一个很重要的问题,读取DPAPI需要运行as the same user or elevated ones,因此它已经可以访问其他有趣的数据。您可以继续使用DPAPI,实际上,Chrome现在已加密密码而不是使用DPAPI,但仍通过DPAPI保留了加密密钥,this StackOverflow answer中明确描述了解密程序,恶意软件和密码工具仅在几天后更新Chrome更新。
因此,如果您想添加非常小的更改,通常使用DPAPI as it is就足够了。添加其他加密只会迫使攻击者反编译您的应用以逆转加密,并且您的应用仍会泄漏密码。否则,如果您绝对不想泄露密码,请创建一个Web服务,然后告诉您的应用调用该服务。
答案 1 :(得分:0)
在环境级别而不是代码级别拥有此类数据可能是一个不错的选择。您可以尝试将密码和电子邮件存储在系统环境变量中,然后从代码中检索它。这样,唯一知道变量值的人就是您正在运行代码的系统。