3

我有一个桌面应用程序,它使用远程 smtp 服务器发送电子邮件。所以在代码中我有这样的东西:

string userName = "Alex";
string pass = "123456";
sendEmail(userName, pass);

任何反转我的应用程序的人都可以访问我的邮件服务器。我想知道,是否有任何解决方案可以保护敏感数据(用户名、密码)不被反转?毫不含糊。

谢谢,亚历克斯。

4

4 回答 4

4

将您的 SMTP 凭据和其他敏感数据移动到 app.config 并使用部分加密。

于 2012-05-09T08:02:51.733 回答
2

如果您在应用程序中提供用户名和密码,您应该将其视为向用户公开 - 确实无法保证用户不会检查您的应用程序或嗅探网络连接。

此外,通常会在防火墙中阻止 SMTP 流量并维护单个智能主机,以避免受感染的机器成为垃圾邮件机器人。即使您成功地设法隐藏了凭据,使用这样的 SMTP 也可能是一个不可靠的选择。

你基本上有三个选择:

  • 使用操作系统的发送电子邮件服务 - 在用户拥有的任何电子邮件客户端中启动邮件。
  • 要求用户配置有效的 SMTP 服务器。
  • 设置您自己的 SMTP 中继(例如作为Web 服务),您可以在其中添加额外的检查和限制以确保它不会被滥用。

最后一个选项当然可以与针对您自己的用户数据库的用户身份验证相结合 - 这样您就可以关闭行为不端的用户。

于 2012-05-09T08:00:50.017 回答
0

使用 Web 服务发送电子邮件正文会怎样,这会反过来将电子邮件发送给收件人,而不会将用户凭据暴露给客户端。即使进行了混淆和加密,仍然有可能有人对您的应用程序进行逆向工程并访问您的凭据。混淆不是安全顺便说一句。

于 2012-05-09T08:28:30.707 回答
-1

您是否尝试过混淆您的应用程序?尝试 Dotfuscator Software Services 混淆您的代码,然后查看它是否能够隐藏/混淆用户名和密码。最好的选择是使用 app.config 或 web.config 文件以加密或散列保存您的凭据。

在应用程序中硬编码凭据从来都不是一个好习惯。

于 2012-05-09T08:07:01.817 回答