Twilio Webhooks,验证真正的 twilio 请求

Cip*_*eet 3 webhooks twilio

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

我不喜欢检查 UserAgent 值包含“TwilioProxy”的想法。你推荐更好的方法吗?

phi*_*ash 5

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. 获取您为电话号码或应用程序指定的请求 URL 的完整 URL,从协议 (https...) 到查询字符串的末尾(? 之后的所有内容)。
  2. 如果请求是 POST,则按字母顺序对所有 POST 参数进行排序(使用 Unix 风格区分大小写的排序顺序)。
  3. 遍历已排序的 POST 参数列表,并将变量名称和值(无分隔符)附加到 URL 字符串的末尾。
  4. 使用您的 AuthToken 作为密钥,使用 HMAC-SHA1 对结果字符串进行签名(请记住,您的 AuthToken 的大小写很重要!)。
  5. Base64 编码生成的哈希值。
  6. 将您的哈希值与我们在 X-Twilio-Signature 标头中提交的哈希值进行比较。如果它们匹配,那么您就可以开始了。

这一切都在我们的安全页面上通过示例进行了描述。如果您正在使用我们的官方帮助程序库之一,那么将有一种方法可以验证已经内置的这一点。