Heroku应用程序验证来自Cloudmailin的请求

时间:2012-08-23 08:55:28

标签: web-applications heroku cloudmailin

我在Heroku应用程序中使用Cloudmailin

  

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

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

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

我希望我的应用程序能够对来自Cloudmailin(或我)的HTTP请求进行身份验证。也许Cloudmailin可以某种方式(在HTTP标头或查询字符串中)签署其HTTP请求

1 个答案:

答案 0 :(得分:2)

CloudMailin提供了两种实现此目的的方法:

  • 哈希(已停止使用,仅限原始格式)
  • HTTPS和基本身份验证(新推荐的方法)。

如果您使用CloudMailin的原始格式,则通过散列机制对其进行签名。 CloudMailin与您共享一个密钥,用于散列通过CloudMailin HTTP Post发送的所有字段。这样您就可以验证消息实际来自CloudMailin。有关此哈希的更多详细信息,请参见here

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

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

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