主要观点:将 API 调用从 HTTP 重定向到 HTTPS 的常见做法应重新考虑,因其存在安全隐患。
关键信息:
- 初始代码中 API 基础 URL 误写为 HTTP 导致 API 密钥在网络中以明文传输,虽第三方 API 有 301 重定向到 HTTPS,但仍存在风险。
- 应遵循“快速失败原则”,禁止 API 服务器的 HTTP 接口或对 /api 路径的未加密请求返回 403 错误,以防止机密信息泄露。
- 列举了众多知名 API,部分 API 对未加密请求返回错误,部分则进行 HTTP 到 HTTPS 的重定向,习惯较为普遍。
- 与他人交流发现针对 API 的 HTTP 到 HTTPS 重定向最佳实践较少,建议修订 OWASP 的传输层安全备忘单。
- 还发现一些热门 API 对未加密请求未进行重定向或返回错误,已向相关提供商报告。
重要细节: - Node.js 的 fetch 会跟随 301 重定向到 HTTPS 端点,隐藏了 URL 错误。
- HSTS 可限制嗅探和中间人攻击的机会,浏览器添加了 HSTS 预加载列表和仅 HTTPS 模式。
- 多个知名 API 如 Stripe、Google Cloud 等对未加密请求返回特定错误,而 ActiveCampaign 等 API 进行重定向。
- AWS 的一些 API 对未加密请求以明文响应,Mailchimp 等 API 已在处理中,VirusTotal 已收到报告并响应。
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。