API 安全测试入门

从认证、授权、输入校验、速率限制和日志审计入手,帮助初学者建立 API 安全测试框架,并理解 REST 与鉴权边界。

写在前面:合法学习边界

本文只讲 API 安全的测试思路,适用于自建靶场和授权测试。请不要对真实 API 进行越权、爆破、批量枚举或未授权访问。

一、API 为什么容易出问题

API 通常直接暴露业务逻辑,而且很多接口没有页面保护。

常见风险:

1
2
3
4
5
6
未鉴权接口
对象级越权
参数枚举
批量请求
速率没有限制
返回信息过多

二、API 测试的重点

1. 鉴权

确认每个接口都要求有效 token、session 或签名。

2. 授权

即使有 token,也要检查角色和资源归属。

3. 输入校验

检查分页、排序、过滤参数是否会被滥用。

4. 速率限制

防止爆破、爬取和批量拉取。

5. 错误信息

不要暴露堆栈、内部字段名或敏感结构。

三、常见测试点

1
2
3
4
5
GET /api/user/{id}
POST /api/login
PATCH /api/user/{id}
DELETE /api/order/{id}
GET /api/export

需要检查:

1
2
3
4
5
是否能未登录访问
是否能改 ID 访问别人数据
是否返回了不必要字段
是否支持批量查询
是否有速率限制

影响与危害

API 安全问题能造成:

1
2
3
4
越权、注入、数据泄露
未授权访问
批量数据被爬取
业务逻辑被滥用

风险等级:中到高。

四、防御建议

1
2
3
4
5
6
所有接口都要服务端鉴权
对象级授权必须检查归属
限制请求频率
最小化返回字段
记录审计日志
使用 HTTPS 和签名

修复

1
2
3
4
5
统一鉴权与授权、对象级访问控制
参数化查询与输入校验
接口限流与防刷
敏感接口审计与日志
修复后复测关键测试点

五、报告写法

示例:

1
2
3
发现:/api/orders/{id} 未校验订单归属,低权限用户可读取他人订单详情。
风险:可能导致订单、支付和联系人信息泄露。
建议:增加对象归属校验;减少返回字段;增加访问日志和告警。

六、小结

API 安全的关键是:鉴权、授权、输入、速率、日志,五件事都要做。

本站使用「署名 4.0 国际」创作共享协议,可自由转载、引用,但需署名作者且注明文章出处