C# 如何使用.NET非逆向工程发送邮件?
下面是一段:C# 如何使用.NET非逆向工程发送邮件?,c#,.net,email,security,C#,.net,Email,Security,下面是一段: var client = new SmtpClient("smtp.gmail.com", 587) { Credentials = new NetworkCredential("mymail@gmail.com", "mypassword"), EnableSsl = true, }; var msg = new MailMessage() { From = new MailAddress(&q
var client = new SmtpClient("smtp.gmail.com", 587)
{
Credentials = new NetworkCredential("mymail@gmail.com", "mypassword"),
EnableSsl = true,
};
var msg = new MailMessage()
{
From = new MailAddress("mymail@gmail.com"),
Subject = subject,
Body = body
};
msg.To.Add("xyz@gmail.com");
client.Send(msg);
问题是,“我的密码”很容易从应用程序中进行反向工程,不是吗
如果我是对的,那么我如何防止这种情况发生呢?您可以将其存储在服务器中,并通过API将其发送到您的应用程序。这样,您就不会让用户访问您的密码,而且如果您的服务器是安全的服务器,那么用户访问密码的可能性就会大大降低
编辑:当我说交付它时,我指的是交付对象,或者在这种情况下,您可以在API上使用整个方法,您只需从应用程序中调用它,然后返回布尔值或其他值,以获取有关它是否成功发送电子邮件的反馈。简单的解决方案是将凭据放在web.config或app.config的appSettings中,然后您的程序从配置中获取凭据
您还可以加密应用程序设置,如不能加密。如果应用程序运行在您无法保护的计算机上,则无法完全保护您的密码 即使您加密密码、将其存储在安全存储中或从安全服务中检索密码,该密码仍将保留在本地计算机的内存中,恶意用户可以转储并解析该内存来查找密码。或者,他们可以连接Wireshark或Fiddler,并从电线上嗅出密码(是的,即使您使用的是
EnableSsl=true
)
处理这种情况的最好办法是
(1) 仅为每个用户提供一个帐户和密码
(2) 将功能从客户端移到安全的服务器上您试图保护的场景是什么?只是一个掌握你的应用程序代码的人?或者,您是在试图防止有人在应用程序运行时读取应用程序内存?第二个问题:反编译DLL-s、运行时分析应用程序内存等。示例代码(“如何保护客户端代码中的机密”)与您在“反编译DLL S,运行时分析应用程序内存等”评论…请考虑你想要什么,并考虑问题(显然你已经看过很多关于模糊和保护秘密的问题,所以最好是把你的研究显示为编辑的一部分)好的开始是“在服务器上存储密码”。"... 补偿“将其交付到应用程序”的糟糕建议。。。所以,这比另一个答案中提出的用加密设置来“保护”它们的错误想法稍微好一点。@AlexeiLevenkov,也许我沟通错了。。。通过它,我指的是信息或对象,在本例中,或者是整个发送电子邮件方法。不是密码。这将破坏安全服务器的用途。我通过使用Firebase发送电子邮件的功能解决了这一问题:)如果你假设应用程序位于安全服务器上,这只是一个安全的解决方案。如果它是一个桌面应用程序,你必须在本地保存该文件,这样用户就可以很容易地访问它。是的,我只认为这个应用程序是在安全服务器上工作,而不是在桌面上工作。