API安全完全指南:OWASP API Top 10漏洞全解析,接口安全怎么搞?
2026/9/8 15:32:05 网站建设 项目流程

前后端分离、微服务架构流行后,API越来越多,API安全问题也越来越突出。OWASP专门出了API Security Top 10,说明API安全已经成了重灾区。今天把API安全的所有知识全讲清楚!

1. 为什么API安全这么重要?

参考文章里提到"网络渗透中,攻下一个点后,只是一个开始"。API就是攻击者最喜欢的"点"——接口暴露在公网,权限控制不严,数据泄露的重灾区。

1.1 API安全事件频发

  • 某社交平台API泄露5亿用户数据
  • 某出行平台API未授权访问泄露用户行程
  • 某电商平台API越权导致大量订单信息泄露
  • 某银行API存在注入漏洞

统计数据:
① 90%以上的Web应用都有API接口
② API攻击是增长最快的攻击类型
③ API漏洞平均修复时间比传统Web漏洞长
④ 越权类漏洞在API中最常见

1.2 API vs 传统Web安全

维度传统Web安全API安全
交互方式浏览器+HTML客户端+JSON/XML
攻击面页面+表单接口+参数
认证方式Session/CookieToken/API Key
常见漏洞XSS、CSRF越权、注入、信息泄露
防护手段WAFAPI网关+身份认证

2. OWASP API Security Top 10

OWASP在2023年发布了API安全Top 10:

排名漏洞名称说明
API1失效的对象级别授权(BOLA)越权访问他人数据
API2失效的用户身份认证认证机制被绕过
API3失效的对象属性级别授权越权修改数据字段
API4不受限制的资源消耗DoS攻击、资源耗尽
API5失效的功能级别授权(BFLA)越权执行管理功能
API6批量分配批量赋值导致越权
API7安全配置错误配置不当导致漏洞
API82023已移除——
API9库存资产管理不当废弃API未下线
API10不安全的API使用方式第三方API漏洞

下面重点讲最常见的几个。

3. API1:失效的对象级别授权(BOLA)

这是API最常见、最危险的漏洞,没有之一。

3.1 什么是BOLA?

正常请求:GET /api/user/123 → 返回用户123的信息 攻击请求:GET /api/user/124 → 居然也能返回用户124的信息!

就是把请求里的ID改成别人的,就能看到别人的数据。这种漏洞在API里太常见了。

3.2 为什么容易出现?

① 开发者认为"用户不知道ID就访问不了"
② 只验证了登录状态,没验证数据归属
③ ORM框架直接返回对象,没做权限过滤
④ 接口复用,前端加了限制后端没加

3.3 常见场景

场景示例
查看他人订单/api/order/别人的订单ID
查看他人资料/api/user/别人的用户ID
下载他人文件/api/file/别人的文件ID
修改他人信息PUT /api/user/别人的ID

3.4 怎么防御?

每个接口都要做数据归属校验

  • 不能只校验登录态,必须校验"这条数据是不是你的"
  • 在DAO层统一做权限过滤,不要每个接口单独写

使用不可预测的ID

  • 不用自增ID,用UUID或雪花ID
  • 增加枚举ID的难度

接口最小化返回

  • 只返回前端需要的字段
  • 不要把整个对象都返回

4. API2:失效的用户身份认证

4.1 常见问题

弱Token机制

  • Token太简单,容易被猜测
  • Token不失效,被盗用了一直能用
  • Token存在URL里,容易泄露

认证绕过

  • 不加Token也能访问
  • 随便填个Token就能通过
  • 修改请求头就能绕过认证

暴力破解

  • 登录接口没有频率限制
  • 验证码可以绕过

4.2 怎么防御?

使用标准的认证机制

  • JWT/OAuth 2.0等标准协议
  • 不要自己发明认证机制

Token安全

  • 设置合理的过期时间
  • 使用Refresh Token机制
  • Token放在Header里,不要放URL
  • 支持Token吊销

防暴力破解

  • 登录接口加频率限制
  • 加验证码
  • 账号锁定机制

5. API5:失效的功能级别授权(BFLA)

5.1 什么是BFLA?

跟BOLA不同,BOLA是越权看数据,BFLA是越权做事情。

普通用户请求:DELETE /api/user/123 正常应该返回:403 Forbidden(只有管理员才能删用户) 实际返回:200 OK(普通用户居然也能删用户!)

就是普通用户可以执行管理员才能执行的功能。

5.2 常见场景

① 普通用户可以删除任意内容
② 普通用户可以修改系统配置
③ 普通用户可以查看管理后台接口
④ 普通用户可以提升自己的权限

5.3 怎么防御?

基于角色的访问控制(RBAC)

  • 每个接口明确需要什么角色
  • 统一拦截校验,不要每个接口自己判断

最小权限原则

  • 默认拒绝,按需开放
  • 普通用户默认没有任何管理权限

接口权限矩阵

  • 列出所有接口和对应权限
  • 定期审查权限配置

6. API3:失效的对象属性级别授权

6.1 什么意思?

用户可以修改自己不该修改的字段。

正常请求: PUT /api/user/123 {"nickname": "新昵称"} 攻击请求: PUT /api/user/123 {"nickname": "新昵称", "role": "admin"} 结果:用户把自己改成管理员了!

6.2 为什么会出现?

后端直接把前端传过来的JSON对象存到数据库里,没校验哪些字段能改哪些不能改。这就是"批量赋值"漏洞。

6.3 怎么防御?

DTO(数据传输对象)模式

  • 接口只接收允许修改的字段
  • 不能直接用数据库实体类接收参数

显式指定可更新字段

  • 更新操作只更新指定字段
  • 不要全量更新

输入校验

  • 校验每个字段的合法性
  • 敏感字段(如role、balance)禁止用户修改

7. API安全防护措施

7.1 技术防护

API网关

  • 统一入口,统一认证
  • 限流、熔断、降级
  • 日志和监控

认证授权

  • OAuth 2.0 / JWT
  • RBAC权限控制
  • 数据级权限校验

输入校验

  • 参数合法性校验
  • SQL注入/XSS防护
  • 频率限制

数据保护

  • 敏感数据加密传输
  • 敏感数据脱敏返回
  • 最小化数据返回

安全监控

  • API访问日志
  • 异常访问检测
  • 告警机制

7.2 开发规范

API设计规范

  • RESTful API设计规范
  • 统一的错误码和返回格式
  • 版本化管理

安全开发流程

  • 安全需求评审
  • 安全代码审计
  • 安全测试
  • 上线前安全检查

文档管理

  • API文档及时更新
  • 废弃API及时下线
  • 接口权限矩阵维护

8. API安全测试方法

8.1 越权测试

水平越权测试

  • 用A用户的Token访问B用户的数据
  • 看能不能访问到

垂直越权测试

  • 用普通用户Token访问管理员接口
  • 看能不能执行

参数篡改测试

  • 修改返回结果中的敏感字段
  • 看后端会不会接受

8.2 常用工具

工具用途说明
Burp SuiteAPI渗透测试必备,抓包改包
PostmanAPI测试接口调试
OWASP ZAPAPI安全扫描开源免费
apiscanAPI漏洞扫描自动化扫描
JWT_ToolJWT测试JWT漏洞利用

8.3 测试思路

第1步:收集所有API接口 ↓ 第2步:分析接口的认证方式 ↓ 第3步:测试认证绕过 ↓ 第4步:测试越权(水平+垂直) ↓ 第5步:测试注入(SQL/NoSQL/命令) ↓ 第6步:测试批量赋值 ↓ 第7步:测试信息泄露 ↓ 第8步:测试频率限制

9. API安全学习建议

先学API基础知识。RESTful API、HTTP协议、JSON/XML格式。

学认证授权机制。JWT、OAuth 2.0、Session、Cookie。

打靶场练习。OWASP Juice Shop、DVWA、PortSwigger的API labs。

做代码审计。看别人写的API代码,找漏洞。

参与SRC挖洞。API漏洞在SRC里占比很高,奖金也不错。

【粉丝福利】我整理了一份《API安全大礼包》,含OWASP API Top 10详解、API安全测试checklist、JWT漏洞利用手册、API安全加固指南、Burp API测试插件推荐。免费发给你!大家也可以一起交流API安全经验~

API是数字时代的基础设施,也是安全的重灾区。做好API安全,才能守护好数据。

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询