云与基础设施安全
API (应用程序编程接口)
约 5 分钟阅读
最后更新: 2026-08-12
什么是 API
API (Application Programming Interface) 是软件之间交换数据和功能的约定 (接口)。用餐厅来比喻,就像顾客 (应用程序) 看着菜单 (API 规范) 点餐,服务员 (API) 把订单传达给厨房 (服务器),再把菜品 (数据) 端上来的机制。
智能手机的天气应用能显示最新气象数据,是因为它通过气象服务的 API 获取数据。现代的 Web 服务在后台组合了数十到数百个 API 才得以运转。
API 的主要类型
REST API
目前最普及的 API 设计风格。使用 HTTP 方法 (GET, POST, PUT, DELETE),并以 URL 指定资源。简单易懂,几乎所有 Web 服务都采用它。
GraphQL
Facebook 开发的查询语言。客户端可以只指定需要的数据来获取,因此能避免 REST 容易出现的过度获取 (over-fetching)。在移动应用等带宽受限的环境中更有优势。
WebSocket
在服务器与客户端之间实现双向的实时通信。用于聊天应用、股价的实时显示、在线游戏等要求即时性的场景。
gRPC
Google 开发的高性能 RPC 框架。通过 Protocol Buffers 进行二进制序列化,通信比 REST 更快。常用于微服务之间的内部通信。
API 认证与授权
要安全地使用 API,「谁在访问」(认证) 与「允许做什么」(授权) 这两套机制不可或缺。
- API 密钥:最简单的认证方式。在请求头或查询参数中带上固定的字符串。虽然便捷,但密钥一旦泄露,任何人都能访问。
- OAuth 2.0:实现「用 Google 登录」这类第三方认证的标准协议。不直接共享用户的密码,而是通过访问令牌委托权限。
- JWT (JSON Web Token):把认证信息嵌入令牌,服务器端不保存会话也能完成验证的方式。与无状态的 API 设计契合度高。
把 API 密钥硬编码进源代码、或提交到公开仓库的事故层出不穷。铁律是使用密钥管理工具,通过环境变量或专用的密钥存储来管理。
速率限制与 API 保护
速率限制 (Rate Limiting) 是为一定时间内受理的 API 请求数设置上限的机制。没有它,恶意用户就能轻易地发送大量请求让服务器瘫痪,即DDoS 攻击。
常见的速率限制实现模式有以下几种。
- 固定窗口:像「每分钟最多 100 个请求」这样,以固定的时间段来限制。实现简单,但在窗口的边界处可能出现突发流量。
- 滑动窗口:持续追踪最近 1 分钟内的请求数。解决了固定窗口的突发问题。
- 令牌桶:令牌以一定速度补充,每个请求消耗一个令牌。既容许短时间的突发,又能控制长期的平均速率。
达到速率限制时,服务器会返回 HTTP 状态码 429 (Too Many Requests)。API 的使用方需要实现「收到 429 后拉长重试间隔」(指数退避) 的逻辑。
API 安全实践
API 是现代 Web 服务的核心,对攻击者来说也是主要目标。OWASP API Security Top 10 中,认证缺陷、对象级授权不当、数据过度暴露等被列在前列。
常见误解
- API 只与开发人员有关
- API 被用在智能手机应用、物联网设备、支付系统等日常生活的各种场景中。登录社交媒体、用电子钱包支付、使用打车应用,这些行为全都经由 API。
- 不公开 API 就是安全的
- 即使是内部 API,一旦内网被入侵或遭受供应链攻击,也存在被滥用的风险。对内部 API 同样施加认证、授权与加密的零信任思路很重要。
- REST API 是过时的技术,会被 GraphQL 取代
- GraphQL 在特定用例中表现优秀,但这并不意味着 REST 在所有场景中都更差。在简单的 CRUD 操作和利用缓存方面 REST 更合适,两者是共存的。
分享