2016-01-05 63 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上。 但我能夠通過更正網址和參數 –