我正在使用Twilio Voice API拨打电话。流程是用户在我的网站上启动操作,然后我们通过ruby gem中的twilio对象向Twilio API发送请求。该对象包含
'从'number,'到'number,'url'
'url'是我的API终点,看起来像这样
... / API / V1 /用户/这里
从这里开始,我将请求路由到我的一个控制器的动作,以提供一个twiml来播放。
我的问题是:如何确保ONLY TWILIO能够ping这个api端点?
a)在Twilio的请求中是否有某种标识符可用于验证来源?
b)我正在使用Grape gem来设置api端点。为此我可以用葡萄宝石做点什么吗?
答案 0 :(得分:3)
Twilio传道者在这里。
Twilio有一个我们发送的名为X-Twilio-Signature的特殊标题,允许您validate that the webhook request is only coming from Twilio。
Ruby帮助程序库包含一个中间件,您可以插入该中间件以检查此标头并执行验证。查看此博客文章了解更多信息:
https://www.twilio.com/blog/2014/09/securing-your-ruby-webhooks-with-rack-middleware.html
希望有所帮助
答案 1 :(得分:0)
执行此操作的一种简单方法是使用API令牌。选择一个漂亮的随机字符串并设置您的Twilio URL以包含?token=abcd1234
,然后在您的服务器上验证该令牌是否存在。任何打到你的终端的人都没有它,所以你知道它必须是Twilio。