🌍 译介 · 编译自 Nordic APIs

API 安全九大威胁与防御

API 天生暴露大量(可能敏感)数据,又绕过了浏览器防护,传统 SQL 注入/XSS 思路远远不够。本文编译自 Nordic APIs(2020-09-15,作者 Derric Gilling,Moesif CEO),梳理 9 大最常见 API 威胁及可落地的防御手段,其中多项直击 OWASP API 安全风险榜。

📅 更新于 2026-07-21 ⏱ 约 6 分钟阅读 🏷 译介
免费试用 YesApi Pro 查看全部定价 →
🌐本文由 YesApi Pro 团队编译Nordic APIs 的文章《9 Common API Threats, And How To Avoid Them》,原作者 Derric Gilling(原文发布于 2020-09-15)。版权归原作者所有,内容仅供学习参考。查看英文原文 →
📌 核心结论
9 大 API 威胁:①分页爬取(按用户级资源访问量限阈)②API Key 池(人工注册+异常检测)③密钥意外泄露(双令牌:长刷新+短访问)④DDoS(无 key 直接拒、按 key 限流 429)⑤服务器配置(强制 HTTPS、清错误细节)⑥缓存头错配(Cache-Control: no-store)⑦日志监控不足(关联用户、留存≥1年)⑧内网端点暴露(网关/负载均衡拦公网)⑨越权(鉴权≠授权,做对象级 ACL)。
📑 本文目录
  1. 威胁总览
  2. ① 分页爬取攻击
  3. ② 不安全的 API Key 生成
  4. ③ 密钥意外泄露
  5. ④ DDoS 暴露
  6. ⑤ 服务器安全配置错
  7. ⑥ 缓存头错配
  8. ⑦ 日志与监控不足
  9. ⑧ 内网端点暴露
  10. ⑨ 未处理授权
  11. 译者落地建议
01

一、威胁总览

API 让外界能访问大量(可能敏感的)数据,却又绕过了浏览器的防护。光盯着 SQL 注入和 XSS 不够——你更该担心坏分子把客户记录整库翻一遍。Captcha、浏览器指纹这类传统手段对 API 基本失效,因为 API 本就要处理海量程序化调用。第一步是把自己摆到黑客位置,再给 API 装上检测并拦截常见攻击、以及未知零日的能力。下面 9 条里,部分在 OWASP API 安全榜上,部分不在。

02

二、① 分页爬取攻击

多数 API 暴露的是实体列表(如 /users)。黑客可写脚本,以一个随机延迟循环翻页,把整库数据刮走——尤其当实体意外暴露了 PII 或可泄露业务数据时,危害极大(Venmo 即前车之鉴)。简单限制 take 数量既伤合法大客户同步,又挡不住带随机延时的脚本。正确做法:按用户或 API key 跟踪单位时间内访问的单一资源总量,触阈(如「1 小时内触碰 100 万条」)即封禁,像 Captcha 一样拖慢黑客扩张速度。

03

三、② 不安全的 API Key 生成

API 多由 API Key 或 JWT 保护,安全工具能据此检测异常、自动封禁。但黑客会像 Web 黑客用大量 IP 池绕过 DDoS 防护那样,批量生成大量 key。最易的防御是要求真人注册才能生成 key,用 Captcha 与 2FA 挡住机器人;除非有正当理由,新用户不应能程序化生成 key,异常检测也要做在「用户/账户」层级而非单个 key 上。

04

四、③ 密钥意外泄露

API 常因使用方式放大泄露概率:长期有效的 key 被存进环境变量后遗忘;调试时开发者把带 key 的 CURL 粘到 GitHub Issues/Stack Overflow;key 多为不记名令牌、无二次验证。若因用户失误泄露,责任不全在用户——提供方也应降低风险面。最易的缓解是双令牌:环境里只存长寿命的刷新令牌,用它换短效访问令牌;SDK 初始化时自动换发,即使 CURL 被贴出去,攻击窗口也只有数小时。

05

五、④ DDoS 暴露

API 开启了「客户程序化访问」的新模式,也让 DDoS 防护变难:传统防护靠指纹识别机器人流量,但 API 流量本就像机器人、又无浏览器 Cookie。妙处在于几乎每次访问都要带 key——无 key 的请求可直接拒绝(且要在 JSON 解析等后续中间件之前尽早短路);已认证的请求则用按 key 的限流计数器,超阈返回 429,算法可选漏桶或固定窗口。

06

六、⑤ 服务器安全配置错

API 和 Web 服务器一样讲卫生。SSL 配置错或放行非 HTTPS 都会漏数据;现代应用几乎没理由接受非 HTTPS 请求,但客户可能误发,而 API 没有浏览器那层 HSTS/重定向保护。应用去 Qualys SSL Test 测实现,在负载均衡上拦掉所有非 HTTP 请求,清掉会泄露实现细节的响应头与错误信息。

07

七、⑥ 缓存头错配

API 暴露的是按 key 隔离的动态数据,任何缓存都要能按 key 作用域隔离,避免串味。即便你自己不缓存,也可能把客户坑了——若客户用代理、且同时持有多个 key(开发/生产),会看到交叉污染的数据(Twitter 计费信息泄露即此因)。大坑:很多 API 不用标准 Authorization 头,而用 X-Api-Key 之类自定义头,缓存服务器不知这是认证请求,便直接缓存了。正确做法:设 Cache-Control: no-store, no-cache, must-revalidatePragma: no-cache

08

八、⑦ 日志与监控不足

日志监控不足是 OWASP API 安全 Top 10 之一。多数泄密研究显示,发现数据泄露平均要 200 多天;没有日志监控,攻击者可一直利用同一漏洞甚至继续挖。正确做法:日志不仅要记请求本身,还要关联回用户做行为分析,并留存至少一年;系统要受保护,防止数据被误删或过早退役。GDPR/CCPA 对安全用途的审计日志有例外。

09

九、⑧ 内网端点暴露

同一 API 服务可能同时被内外使用。端点没写在文档里,不代表黑客调不到。除鉴权/授权外,还应确保这些端点根本不暴露到公网——在负载均衡或 API 网关上做,多层防护是通用预防策略。

10

十、⑨ 未处理授权

多数开发者会加全局鉴权(API Key/OAuth)确认「你是谁」,但更难也更易忘的是授权——确认这个已识别的人能否访问特定资源,可用 API 作用域、租户 ID、用户 ID 等做。它绑定你的应用逻辑、不总是横切,常被忽略。除非对象标识符熵足够高,否则黑客可轻易遍历 ID(SQL 自增 ID 尤甚)。修复:确保已认证用户被授权访问生成响应所需的全部资源,可对照用户 ID 或 ACL 校验。

11

十一、译者落地建议

9 大威胁里,④DDoS、⑦日志不足、⑨越权恰好是 YesApi Pro 网关的强项:统一鉴权 + 细粒度授权(对象级 ACL)+ 按 key 限流(超阈 429)+ 调用日志留存与审计,相当于在后端之前就筑起护城河;私有部署 + 源码交付还能对照 OWASP 逐条加固。把安全前移,比上线后救火便宜得多。

译者实战注 落地建议与延伸

需要快速落地?

YesApi Pro 私有部署、源码交付、当天上线,帮您把方案变为现实。

立即预约演示 →

常见问题

API 本就要处理海量程序化调用,Captcha/指纹是针对浏览器的;防护要落到「按用户/key 的资源访问量限阈」与「无 key 直接拒」。

鉴权确认「你是谁」,授权确认「你能碰这个资源吗」;很多团队只做全局鉴权漏了对象级授权,导致越权遍历。

用双令牌:环境里只存刷新令牌,SDK 自动换短效访问令牌;即使 CURL 被贴出去,攻击窗口也只有数小时。

网关层统一鉴权、细粒度授权、按 key 限流(429)、调用日志留存与审计,私有部署+源码交付可对照 OWASP 逐项加固,把 9 大威胁挡在门外。
📚

继续阅读