2016-01-05 66 views
1

我下面的快速入门例子在这里: Twilio Python QuickstartTwilio接收SMS安全

服务器应该怎样验证该请求实际上是从twilio来了吗?

我正在查看电话号码配置屏幕和this is what I see.我没有看到IP白名单或指定twilio的身份验证凭据的方式。

似乎任何知道URL和响应格式的人都可能假装是twilio。

感谢您的帮助:)

回答

1

当特定twilio号码接收到消息,请求将与该号码相关的短信URL进行。除了消息体外,Twilio还会传递许多参数。完整的参数列表可以参见here)。

现在您可以检查传递消息的AccountSid是否已设置,并且与您的帐户Sid一样用于快速验证。

如果你想的可靠性较高的水平,那么你可以使用MessageSid参数使用REST API查询Message资源,并从REST API获得的请求和资源之间的交叉检查。

(参照here为twilio消息REST API

2

Twilio显影剂传道这里。

我知道Akhil回答了这个问题(谢谢Akhil!),你接受了答案。但是,还有一个更好的方法可以更好地验证Twilio提出的请求,我想与您分享这些请求。

当Twilio拨打您的短信网址(或您设置的任何其他网址)时,它将使用网址,请求中的参数和您帐号的身份验证令牌来组合请求。然后将签名作为请求标头X-Twilio-Signature发送。

要验证请求是由Twilio完成的,您可以按照相同的流程创建签名,然后与Twilio发送的进行比较。如果他们匹配,你可以保证Twilio发送了请求。

这是它的高级视图,如果您想了解更多信息,包括创建签名算法的完整说明,请查看Twilio's security page。如果你使用Python,the Twilio Python library provides the RequestValidator to easily validate requests

+0

是否有可能在非https回叫url上实现安全性? –

+1

如果您执行签名检查,正如我描述并链接到上面,那么您可以确定webhook的内容是Twilio发送的内容。如果你使用的是非https,那么你不能保证有人没有拦截并阅读你的webhook的内容。我们建议您使用https,如果您需要更简单且免费的方式来设置https,我建议您查看[letsencrypt](https://letsencrypt.org/)。 – philnash

+0

我有多个环境,我必须实现安全性。他们中的大多数(除了一个测试环境)都在https上。 但我能够通过更正网址和参数 –