Complete a 3 Question Survey and Earn a re:Post Badge
Help improve AWS Support Official channel in re:Post and share your experience - complete a quick three-question survey to earn a re:Post badge!
【以下的问题经过翻译处理】 许多客户一直试图限制仅从他们的 CloudFront 分配访问 API 网关上的 API。限制的形式可以是:
我的想法是在我们进入集成阶段之前验证标头,或者如果请求不是来自我信任的来源,API 网关将更早地丢弃请求,甚至浪费处理周期来调用自定义授权方中的 lambda 函数。
我目前可能不理想的解决方案是:
在方法请求中添加一个必需的标头,例如:X-CDN-XXXXXXXXXX,其中 XXXXXXXXXX 是 CloudFront 在原始请求中注入的哈希值。标头是必需的,值可以只是“CloudFront”,或者如果我们将此机制与多个 CDN 一起使用,我们可以在值中添加 CDN 名称。
X-CDN-XXXXXXXXXX
XXXXXXXXXX
更改 Bad Parameters 的默认响应以停止返回缺少参数的名称,因为该名称现在是敏感的。
增加安全性的可选机制是:
添加第二个标头,如“X-CDN-KEY”,并将秘密作为值。如果请求从这 2 个标头的存在通过方法请求验证,则请求前进到集成,应用程序将处理该请求。
这种方法可能会降低处理成本、减少延迟、降低 DDOS 攻击的风险并提高可扩展性。但更好的方法是在我们进行集成之前验证标头值(并可能调用 lambda 函数或任何后端来处理请求)
OpenAPI 支持路径、查询、标头、cookie 等参数,它们可以有模式来使用类型、格式、正则表达式和静态值来验证参数值。
但是使用 API 网关我没有看到如何将模型应用于 HTTP 标头,然后在方法请求阶段验证标头值。
【以下的回答经过翻译处理】 查看这篇博客文章:https://aws.amazon.com/blogs/compute/protecting-your-api-using-amazon-api-gateway-and-aws-waf-part-2/
您未登录。 登录 发布回答。
一个好的回答可以清楚地解答问题和提供建设性反馈,并能促进提问者的职业发展。