1

我在 Heroku 应用程序中使用 Cloudmailin

CloudMailin 允许您通过 HTTP POST 请求在 Web 应用程序中接收传入的电子邮件

就我而言,Cloudmailin 配置为接收电子邮件以将它们发布到myapp.heroku.com/incoming_url.

我注意到任何人都可以跳过中间人和 POST 来/incoming_url刺激我的应用程序就像收到一封电子邮件一样。由于我的应用程序因此会发送一封电子邮件,我担心它可能会被滥用来发送垃圾邮件。

我希望我的应用程序能够验证真正由 Cloudmailin(或我)发出的 HTTP 请求。也许 Cloudmailin 可以以某种方式签署其 HTTP 请求(在 HTTP 标头或查询字符串中)

4

1 回答 1

4

CloudMailin 提供了两种方法来实现这一点:

  • 散列(已停产,仅限原始格式)
  • HTTPS 和基本身份验证(新推荐的方法)。

如果您在 CloudMailin 中使用原始格式,则它通过散列机制进行签名。CloudMailin 与您共享一个密钥,用于散列通过 CloudMailin HTTP Post 发送的所有字段。这样您就可以验证消息是否确实来自 CloudMailin。可以在此处找到有关此散列的更多详细信息。

但是,在最近的格式中,这已停止使用 HTTPS 和基本身份验证。散列算法可能有点复杂,而且设置起来也很复杂。因此,建议用户通过 HTTPS 向其站点发出请求并通过基本身份验证。然后你可以使用类似的东西:

https://username:password@yourdomain.com/target

作为您发布电子邮件的位置。由于只有 CloudMailin 和您的站点知道您可以拒绝此类攻击的用户名和密码,它还具有加密您的消息传输的好处,因此没有人可以窥探信息。

于 2012-08-24T08:23:11.023 回答