你的 API 不应该将 HTTP 重定向到 HTTPS

主要观点:将 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 已收到报告并响应。
阅读 32
0 条评论