不知道你有没有这种感觉:每次看到安全漏洞通报,心里都会咯噔一下,想着“这个漏洞我的API有没有?”然后赶紧去翻代码,结果发现好像没有,又好像有——那种模棱两可的感觉最折磨人。
API安全这东西,说复杂也复杂,说简单也简单。复杂在于攻击手法层出不穷,简单在于大多数问题都有成熟的解法,只是我们常常在赶进度的时候把它们“先放一放”,然后就再也想不起来了。
2025年的数据很能说明问题:全年发布的67058个安全公告中,API相关的占了11053个,占比17%。更扎心的是,CISA(美国网络安全和基础设施安全局)新增的已知被利用漏洞(KEV)里,43%跟API有关。换句话说,API不仅是漏洞高发区,更是攻击者真正在动手的地方。
还有一个趋势值得警惕:AI相关的API漏洞从2024年的439个暴涨到2025年的2185个,同比增长398%。你写的API如果被AI应用调用,安全要求只会更高,不会更低。
所以这篇文章,我想和你一起把API安全这件事掰开揉碎了聊。咱们不搞虚的,直接从OWASP API Security Top 10讲起,再到实际开发中怎么落地,争取看完之后你能有个清晰的作战地图。
一、OWASP API Security Top 10:绕不开的“检查清单”
OWASP在2019年首次发布了API Security Top 10,2023年发布了第二版。为什么专门给API搞一个Top 10?因为API和传统Web应用不一样——API暴露的是程序逻辑和数据接口,攻击者可以直接调用,不需要经过浏览器那层“过滤”。
下面我把这10个风险挨个讲清楚,每个都附上真实案例和能直接用的修复方案。
API1:2023 – 失效的对象级授权(BOLA)
这是API安全里最常见也最致命的漏洞。简单说就是:API收到了一个对象ID(比如用户ID、订单号),但没有检查当前登录的人有没有权限访问这个对象。
真实场景:你调用 GET /api/order/12345 拿到了自己的订单。把ID改成 12346,如果还能拿到别人的订单信息——恭喜你,这就是BOLA。
为什么容易犯:因为开发时常常只检查“用户是否登录”,而忘了检查“这个订单到底是不是这个用户的”。
怎么修:
- 永远不要只相信客户端传来的ID。服务端查询数据库时,必须把当前用户ID作为查询条件的一部分。
- 举个例子:
SELECT * FROM orders WHERE id = ? AND user_id = ?,而不是SELECT * FROM orders WHERE id = ?。 - 对象级授权检查太细了,没法靠API网关统一处理——这个责任在写代码的你身上。
API2:2023 – 失效的认证机制
认证机制实现不当,攻击者可以冒充别人。
真实案例:2025年的一项分析显示,“缺失认证”是当年报告最频繁的单个API漏洞。什么意思?就是有些API端点压根没做身份验证,直接暴露在外面。
怎么修:
- 用成熟的标准协议,别自己造轮子。OAuth 2.0是REST API认证的行业标准。
- 令牌用短生命周期的,配合刷新令牌轮换。
- 强制多因素认证(MFA) ,尤其是管理员账户。
- 每个敏感操作都要做认证——别只在你“记得”的地方做。
API3:2023 – 失效的对象属性级授权(BOPLA)
这个风险合并了2019版的两个问题:过度数据暴露和批量分配。
过度数据暴露:API返回了太多字段。比如查询用户信息,结果连密码哈希、内部ID都一起返回了。
批量分配:攻击者在请求里多加了个字段,比如把 {"name":"test"} 改成 {"name":"test","isAdmin":true},服务端一股脑全接收了,于是普通用户变成了管理员。
怎么修:
- 按角色控制返回字段——管理员能看到的多,普通用户看到的少。
- 用白名单方式接收参数,明确允许哪些字段,其他的统统忽略。
- 别把数据库实体直接暴露给API,建个DTO(数据传输对象)做转换。
API4:2023 – 不受限制的资源消耗
没有限制的API,就像没有刹车的车。攻击者可以疯狂调用,把你的CPU跑满、带宽占光、钱花完。
真实场景:某社交平台的API没做频率限制,攻击者遍历用户ID,批量爬走了数百万用户的个人信息。
怎么修:
- 实施速率限制:每IP、每用户、每API密钥分别限流。
- 设置配额:比如每月最多调用多少次。
- 限制Payload大小,别让客户端传个几十MB的JSON过来。
- 返回HTTP 429状态码,建议客户端用指数退避重试。
API5:2023 – 失效的功能级授权(BFLA)
普通用户能访问管理员功能。比如 /api/admin/users 这个接口,本应只有管理员能调,结果普通用户也能访问。
真实场景:某SaaS应用的普通用户通过猜测管理员API端点,成功访问了用户管理、数据导出等功能,导致全平台数据泄露。
怎么修:
- 默认拒绝所有访问,然后明确授权特定角色。
- 自动化测试要覆盖不同角色的权限验证——别只测管理员,要测普通用户能不能碰管理员接口。
- 前后端的权限校验要保持一致。
API6:2023 – 不受限制地接触敏感业务流程
这个风险在2023版是新增的。它不是技术漏洞,而是业务逻辑被滥用。
真实场景:电商的秒杀活动,正常用户手动抢,攻击者写脚本自动抢。再比如密码重置功能,被脚本无限触发,短信费暴涨。
怎么修:
- 流程级的防护:步进认证(关键操作再验一次身份)、人机验证、异常行为检测。
- 测试业务逻辑滥用场景,不只测技术漏洞。
API7:2023 – 服务端请求伪造(SSRF)
API要取一个外部资源,但没验证用户提供的URL。攻击者可以让你的服务器去访问内网地址,比如 http://169.254.169.254/latest/meta-data/(云环境的元数据服务)。
怎么修:
- 校验所有用户提供的URL——用白名单限制目标地址。
- 限制协议,比如只允许HTTPS,不允许file://、gopher://这些。
- 别把内部服务的响应原样返回给客户端。
API8:2023 – 安全配置错误
这是最“蠢”但也最常见的漏洞。默认密码没改、调试模式开着、不必要的HTTP方法(OPTIONS、TRACE)没关、错误信息暴露了堆栈。
怎么修:
- 生产环境关掉调试模式。
- 移除不必要的HTTP方法。
- 用基础设施即代码(IaC)管理配置,版本化、可审计。
- 自动化配置扫描集成到CI/CD里。
API9:2023 – 库存管理不当
你看不见的API,就是最大的安全隐患。影子API(没人知道它存在的接口)、僵尸API(已经不用但还跑着的接口)、测试接口——这些都是攻击者的突破口。
怎么修:
- 维护所有API端点的清单,用OpenAPI/Swagger规范记录。
- 启用API自动发现,找出那些“没人知道”的接口。
- 建立变更管控:上线、更新、下线全流程可追踪。
- 定期做API渗透测试。
API10:2023 – API的不安全使用
开发者通常更信任第三方API返回的数据,而放松了安全检查。攻击者已经开始攻击目标依赖的第三方服务,而不是直接攻击目标本身。
真实案例:2025年11月,OpenAI的供应商Mixpanel遭到短信钓鱼攻击,员工凭证被窃取,导致OpenAI开发者的部分数据(姓名、邮箱等)泄露。OpenAI自己的系统没事,但“猪队友”把数据漏了。
怎么修:
- 对第三方API的响应做同样的安全检查和验证。
- 验证响应参数,建立允许的重定向URL列表。
- 限制资源分配——别让第三方API耗尽你的资源。
二、开发中必须养成的安全习惯
上面10个风险是“要防什么”,下面这些是“怎么防”。我挑几个开发中最常被忽略但又最关键的点展开说。
1. HTTPS是底线,不是选项
所有API通信必须走HTTPS(TLS) 。TLS 1.2是最低要求,TLS 1.3更好。
别觉得“内网没事”就不加密。零信任的核心思想之一就是:内部网络也不可信。
对于敏感的内部服务间通信,考虑mTLS(双向TLS) ——双方都用证书验证身份。
2. 输入验证:永远不要信任客户端
所有来自客户端的数据都是不可信的。这不是态度问题,是安全底线。
- 类型、格式、长度、范围——全都要校验。
- 用预编译语句(Prepared Statements)或ORM防止SQL注入。
- 输出时做编码,防止XSS攻击。
3. 认证授权:选对方案,用对方式
- OAuth 2.0 + OIDC:需要用户授权的场景。
- JWT:无状态认证场景。注意:签名算法用RS256,别用HS256;别在Payload里存敏感信息;设置合理的过期时间。
- API Key:简单的内部服务调用。别硬编码在代码里,用环境变量或密钥管理服务。
4. 速率限制:给你的API装个“刹车”
没有速率限制的API,就像没装刹车在高速上跑。
- 分层限流:每IP、每用户、每API密钥分别设置。
- 返回429状态码,让客户端知道“你太快了”。
- 隔离防护:一个用户滥用不影响其他人。
5. 日志与监控:看不见的安全等于没安全
没有日志,出了事你连从哪查都不知道。
- 记录关键字段:时间、源IP、用户ID、API端点、状态码。
- 日志防篡改、集中存储。
- 建立异常告警:高频调用、批量导出、非正常时间段的访问。
- 定期做安全测试:渗透测试、代码审计。
6. API网关:统一的安全控制点
API网关可以做认证、授权、限流、日志的统一管理。它相当于所有API流量的“安检口”。
- WAF(Web应用防火墙) 部署在网关前,可以检测SQL注入、XSS等攻击。
- Bot识别:区分正常用户、合法应用和恶意自动化工具。
三、2026年的新挑战:AI来了
前面提到了,AI相关的API漏洞一年涨了近400%。这不是巧合。
AI应用大量依赖API——调用大模型、调用工具、调用数据源。而且AI是自动化的,它不会累,可以24小时不停地探测你的API。以前需要人工慢慢摸索的漏洞,AI几分钟就能试出来。
这对API开发意味着什么?
- 授权漏洞的代价更高了。AI可以系统性地枚举所有ID、所有路径,BOLA这种漏洞在AI面前无所遁形。
- 速率限制更重要了。AI的调用量是人类的上千倍。
- 资产管理更紧迫了。影子API在AI的扫描下藏不住。
- 第三方API的风险更大了。AI应用往往依赖多个第三方API,一个环节出问题全链遭殃。
简单说:以前需要高手花时间才能发现的漏洞,现在AI可以规模化、自动化地发现和利用。API安全的底线必须抬高了。
四、一句话总结
API安全没有银弹。它是一个从设计到编码到运维,贯穿全生命周期的事。
但好消息是:绝大多数API安全问题都有成熟的解法。OWASP Top 10给了你一张检查清单,各种标准协议和工具给了你武器。剩下的就是——别偷懒,别抱有侥幸心理。
每次写完一个API端点,问自己三个问题:
- 这个端点做了认证吗?
- 这个端点做了授权检查吗(不只是登录检查)?
- 这个端点有速率限制吗?
养成这三个习惯,你已经避开了80%的坑。
剩下的20%,靠持续学习、持续测试、持续改进。
毕竟,安全不是一次性的工作,是每天都在做的事情。
参考来源:OWASP API Security Top 10 2023、Wallarm 2026 API ThreatStats Report、42Crunch State of API Security 2026、NIST SP 800-228等


被折叠的 条评论
为什么被折叠?



