Twilio Webhook,验证真实的Twilio请求



我正在为我们的解决方案评估Twilio Webhook。它很有魅力。我想检测并验证它是真实的TWILIO调用,而不是BOT/FAKE,它正在调用我们的EndPoint(IPN侦听器,我们为TWILIO WebHook侦听器指定的URL)。

我不喜欢检查UserAgent值是否包含"TwilioProxy"的想法。你推荐一个更好的方法吗?

这里是Twilio开发人员的传道者。

你完全可以验证一个webhook是一个真正的Twilio请求。

对于每个webhook请求,Twilio都会发送一个带有签名的X-Twilio-Signature

  1. Twilio将其请求组装到您的应用程序,包括最终URL和任何POST字段(如果请求是POST)
  2. 如果您的请求是POST,Twilio会获取所有POST字段,按名称的字母顺序对它们进行排序,并将参数名称和值连接到URL的末尾(没有分隔符)
  3. Twilio获取结果字符串(包含查询字符串和所有POST参数的完整URL),并使用HMAC-SHA1和您的AuthToken作为密钥对其进行签名

要验证签名,您需要:

  1. 从协议(https…)到查询字符串(?之后的所有内容)
  2. 如果请求是POST,请按字母顺序对所有POST参数进行排序(使用Unix风格的区分大小写的排序顺序)
  3. 遍历POST参数的排序列表,并将变量名称和值(不带分隔符)附加到URL的末尾字符串
  4. 使用您的AuthToken作为密钥,使用HMAC-SHA1对生成的字符串进行签名(记住,AuthToken的大小写很重要!)
  5. Base64对生成的哈希值进行编码
  6. 将您的哈希与X-Twilio-Signature标头中提交的哈希进行比较。如果他们匹配,那么你就可以走了

这一切都在我们的安全页面上进行了描述和示例。如果你正在使用我们的官方帮助库,那么将有一种方法来验证这一点。

最新更新