AWS API Gateway路由是否可被公开发现?是否需将API路由视为公开?
问题解答
是否应该将公网API路由视为公开可访问资源
必须默认所有暴露在公网的API路由都是公开可访问的,不存在绝对的路由隐藏机制。爬虫扫描、配置泄露、业务侧日志外泄都可能导致路由地址被外部获取,安全设计层面不能以「路由不对外公开就不会被访问」为前提。
支付webhook是否会被任意主体发送POST请求
只要你的webhook地址是公网可访问的,任何获知该地址的主体都可以向其发送构造的POST请求,包括伪造支付成功、订单完成等回调内容,直接处理未校验的请求会导致直接资损。
仅限制请求来源的方案是否可行
该方案有一定防护作用,但不建议作为唯一的校验手段:
- 多数支付服务商的回调IP段会不定期调整,维护IP白名单的成本较高,更新不及时还会导致正常回调被拦截
- IP校验存在被伪造、通过代理中转绕过的可能,防护强度不足
推荐采用多层校验的组合方案:
- 优先使用支付平台提供的签名校验机制:正规支付服务的回调都会携带基于平台分配的密钥生成的签名,你可以在本地对回调参数重新计算签名做比对,验签不通过的请求直接拒绝,这是最核心的防护逻辑
- 可以叠加IP白名单限制作为第二层防护,降低恶意请求触达核心逻辑的概率
- 可以给webhook路径添加无规律的复杂随机后缀,大幅降低路径被扫描工具批量命中的概率
- 所有回调处理逻辑要做幂等处理,同一个订单的多次回调处理结果一致,避免重复记账、重复发货
提示:所有涉及资金变动的接口都要遵循「默认所有外部请求不可信」的原则,不要信任任何未经校验的传入参数。
内容的提问来源于stack exchange,提问作者bldcaveman
相关产品推荐
相关产品推荐

