Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/276.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 如何使用.NET非逆向工程发送邮件?_C#_.net_Email_Security - Fatal编程技术网

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发送电子邮件的功能解决了这一问题:)如果你假设应用程序位于安全服务器上,这只是一个安全的解决方案。如果它是一个桌面应用程序,你必须在本地保存该文件,这样用户就可以很容易地访问它。是的,我只认为这个应用程序是在安全服务器上工作,而不是在桌面上工作。