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