我在Heroku应用程序中使用Cloudmailin
CloudMailin允许您通过HTTP POST请求在Web应用程序中接收传入的电子邮件
就我而言,Cloudmailin配置为接收电子邮件以将其发送到myapp.heroku.com/incoming_url
。
我注意到任何人都可以跳过中间人并发布到/incoming_url
,以刺激我的应用,就像收到电子邮件一样。由于我的应用程序发送了一封电子邮件,我担心它可能会被滥用来发送垃圾邮件。
我希望我的应用程序能够对来自Cloudmailin(或我)的HTTP请求进行身份验证。也许Cloudmailin可以某种方式(在HTTP标头或查询字符串中)签署其HTTP请求
答案 0 :(得分:2)
CloudMailin提供了两种实现此目的的方法:
如果您使用CloudMailin的原始格式,则通过散列机制对其进行签名。 CloudMailin与您共享一个密钥,用于散列通过CloudMailin HTTP Post发送的所有字段。这样您就可以验证消息实际来自CloudMailin。有关此哈希的更多详细信息,请参见here。
但是,在更新的格式中,已停止使用HTTPS和基本身份验证。散列算法可能有点复杂和复杂,无法进行设置。因此,建议用户通过HTTPS向其站点发出请求并通过基本身份验证。然后你可以使用类似的东西:
https://username:password@yourdomain.com/target
作为您将电子邮件发送到的位置。由于只有CloudMailin和您的站点知道您可以拒绝此类攻击的用户名和密码,因此它还具有加密您的邮件传输的好处,因此没有人可以窥探这些信息。