Twilio Webhooks,验证真正的twilio请求

时间:2017-01-05 09:40:03

标签: twilio webhooks

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

我不喜欢检查UserAgent值包含" TwilioProxy"的想法。你建议采用更好的方法吗?

1 个答案:

答案 0 :(得分:2)

Twilio开发者传道者在这里。

你绝对可以validate that a webhook is a genuine Twilio request

每次webhook请求时,Twilio都会发送一个带有签名的X-Twilio-Signature标头。签名使用以下方法创建:

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

要验证签名,您需要:

  
      
  1. 从协议(https ...)到结束时,获取您为电话号码或应用指定的请求网址的完整网址   查询字符串(后面的所有内容?)。
  2.   
  3. 如果请求是POST,请按字母顺序对所有POST参数进行排序(使用Unix样式区分大小写的排序顺序)。
  4.   
  5. 遍历POST参数的排序列表,并将变量名称和值(没有分隔符)附加到URL的末尾   字符串。
  6.   
  7. 使用您的AuthToken作为密钥,使用HMAC-SHA1签署结果字符串(请记住,您的AuthToken案例很重要!)。
  8.   
  9. Base64对生成的哈希值进行编码。
  10.   
  11. 将您的哈希值与我们的哈希值进行比较,并在X-Twilio-Signature标头中提交。如果他们匹配,那么你很高兴。
  12.   

我们在Security page上通过示例对此进行了描述。如果您正在使用我们的official helper libraries之一,那么将有一种方法来验证已内置的内容。