在源中隐藏邮件服务器的凭据

时间:2012-05-09 07:52:28

标签: c# .net security

我有一个桌面应用程序,使用远程smtp-server发送电子邮件。所以在代码中我这样说:

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

任何反转我的应用的人都可以访问我的邮件服务器。我想知道,是否有任何解决方案可以保护敏感数据(userName,pass)免受反转?没有混淆。

谢谢, 亚历克斯。

4 个答案:

答案 0 :(得分:4)

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

答案 1 :(得分:2)

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

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

你基本上有三个选择:

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

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

答案 2 :(得分:0)

如何使用Web服务发送电子邮件正文,然后将电子邮件发送给收件人,而不会将用户凭据暴露给客户端。即使使用模糊处理和加密,仍然可以让某人对您的应用程序进行反向工程并获取对您的凭据的访问权限。混淆不是安全btw。

答案 3 :(得分:-1)

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

在应用程序中硬编码凭证绝不是一个好习惯。