我的要求: 使用 CloudFlare 防止非 Twilio 访问我的 ALB 托管应用程序。
我的限制: 由于 Twilio 云设计的性质,由于请求可能来自大量 IP,因此不可能将访问列入白名单到一组 IP。
可能的解决方案: Twilio 在 https://www.twilio.com/docs/usage/security 下建议了几个选项,但我不知道如何使用这些方法中的任何一个作为仅允许 twilio 流量的方法。但任何设计的验证都只能应用于我网站的 url 中 /api 的 dns 记录。
更多信息: 底层应用程序是用 php 编写的。 我更喜欢 CloudFlare 解决方案,而不是更改应用程序中的代码。
一种可能的方法是:
X-Twilio-Signature
(作为第一个基本检查),阻止没有它的请求。X-Twilio-Signature
和请求数据,并使用 Twilio 文档中描述的过程来验证它。如果匹配,则将请求转发到您的负载均衡器。如果没有,则向调用者返回错误。此外,请确保您的源服务器仅接受来自 Cloudflare 的流量,以防止直接篡改。