【问题标题】:Is It Secure To Send Emails From Desktop Application?从桌面应用程序发送电子邮件是否安全?
【发布时间】:2014-01-08 18:50:05
【问题描述】:

我将在我的 .net 桌面应用程序中使用电子邮件服务(gmail 或 yahoo 等)。 我将使用电子邮件服务发送错误报告、提交联系表格和采购请求(经用户许可)

我不会将我的登录信息存储在我的应用程序源中。登录信息(即用户名和密码)将以加密形式从网络上抓取。然后我的软件会在抓取后对其进行描述。

  • 没有人可以从源代码中获取登录信息。 (因为不存在,所以会从网上抓取)

  • 没有人可以从 Web 获取登录信息。 (因为它是隐藏路径,也是我自己的加密形式)

但我仍然担心在桌面程序中使用电子邮件服务是否安全,因为像“Avast”这样的防病毒软件会监控 SMPT 端口并在我们每封外发电子邮件中添加徽标和标题。所以我们的电子邮件可以在没有登录信息的情况下阅读。如果 Avast 可以编辑我们的电子邮件,它也可以获取我们的密码。

【问题讨论】:

  • 我可以通过(除其他外)在适当的时间进行内存转储来从您的应用程序中获取登录信息。使用身份验证凭据完全安全的唯一方法是使用 SecureString 类型。不幸的是,其他服务不能很好地支持这种类型。
  • 那么我应该怎么做才能从我的桌面应用程序向我发送信息(错误报告和反馈等)?如果电子邮件不完全安全并且可以从“内存转储”方法中劫持。还有你所说的“SecureString”是什么意思?
  • 对于错误报告,您可以考虑托管 Web 服务而不是电子邮件。

标签: .net security email desktop-application email-client


【解决方案1】:

没有人可以从网络上获取登录信息。 (因为它是隐藏路径,也是我自己的加密形式)

隐藏路径不是存储安全信息的好地方。这类似于将您的房屋钥匙存放在花盆下。由于用户可以控制客户端计算机,因此他们也可能能够通过内存转储或其他方式来检索它。

你应该怎么做

您应该在您的服务器上创建和托管 Web 服务,而不是直接从您的桌面应用程序发送邮件。桌面应用程序将向您的网络服务发出网络服务请求,网络服务将处理电子邮件的发送。这样一来,您的电子邮件凭据和发件人/收件人地址将受到您的网络服务的安全控制,不受桌面应用程序、其用户和任何防病毒软件的控制。

您还应该使用certificate pinning 通过 HTTPS 访问您的服务,以确保您的应用仅与受信任的 Web 服务进行通信,并确保用于您的 Web 服务的任何凭据都保持安全。您可以在每次安装时拥有一个私钥,以便使用您的 Web 服务对每个桌面应用程序进行身份验证。如果发生任何违规行为,您只需撤销该密钥服务器端,而不是让您的整个电子邮件系统处于危险之中。

【讨论】:

    【解决方案2】:

    但我仍然担心在桌面程序中使用电子邮件服务是否安全,因为像“Avast”这样的一些防病毒软件会监控 SMPT 端口并在我们每封发送的电子邮件中添加徽标和标题。

    使用加密连接进行 SMTP 传输(例如带有 SSL 的 SMTP)。这应该可以防止防病毒软件能够拦截和解密数据。

    大多数现代电子邮件托管服务允许使用 SSL 的 SMTP 连接。

    【讨论】:

    • Gmail 是 SSL,但 avast 仍然可以修改我们发出的电子邮件。
    【解决方案3】:

    在应用程序中设置 PGP 加密,绝对安全,并且可以对信息进行签名,以便接收者可以检查发送者的真实性。

    http://en.wikipedia.org/wiki/Pretty_Good_Privacy

    【讨论】:

      猜你喜欢
      • 2021-12-17
      • 1970-01-01
      • 2014-07-03
      • 1970-01-01
      • 2021-06-08
      • 2020-05-24
      • 2011-05-08
      • 2011-08-06
      • 2011-02-03
      相关资源
      最近更新 更多