常见漏洞验证121 条

API 认证机制检查

接口认证方式核查:是否所有端点强制认证、令牌是否可撤销、认证失败是否统一处理,以及内部/管理接口是否例外暴露。

API 认证检查查什么

接口的认证问题往往不是「完全没有认证」,而是覆盖面不全:新版本接口做了校验、老版本没有;读接口受控、写接口漏了;主网关校验了、内部直连端口没有。检查因此用端点矩阵的方式推进:按接口清单分别用无凭据和失效凭据访问,逐条记录返回,再区分「业务上本就公开」的接口。令牌的生命周期同样要查——注销后的旧令牌还能不能读数据,是很多系统的通病。

基本信息

核查项认证覆盖率、令牌生命周期、失败处理一致性
测试矩阵无凭据 × 失效凭据 × 读接口 × 写接口
凭据来源自有测试账号;注销后保留旧令牌用于重放
判定口径所有需认证的端点必须统一拒绝,公开接口需有业务说明
修复方向网关统一认证,例外接口清单化审批

典型使用场景

  • 新系统接口安全评审的基础项
  • 评估多版本并存的接口:v1 与 v2 的认证是否一致
  • 核查移动端与旧版客户端的接口,这类入口常因兼容性被放宽
  • 验证令牌注销机制:改密、注销、降权后旧令牌是否立即失效
  • 为越权类问题提供前置结论:认证缺失会放大授权缺陷

验证步骤

验证步骤
# 1. 无凭据访问读接口与写接口,分别记录返回
curl -s -o /dev/null -w 'no-auth read %{http_code}\n' https://api.example.com/v1/users/me
curl -s -o /dev/null -w 'no-auth write %{http_code}\n' -X POST https://api.example.com/v1/orders -d '{}'
# 2. 用注销后的旧令牌重放只读请求
curl -s -H 'Authorization: Bearer <已注销令牌>' https://api.example.com/v1/users/me | head -5
# 3. 核对内部与管理接口是否有独立认证,不依赖前端网关
# 4. 区分业务公开接口(健康检查、静态资源)并单独标注

响应与判断

响应含义处置
401 或 403认证与鉴权正常拒绝记录为已核查
200 且返回业务数据认证缺失列缺陷,评估数据敏感度后定级
200 但返回空结果可能仅过滤数据未校验身份进一步确认是否可跨账号读取
注销后仍返回数据令牌未失效单独列为会话失效不彻底问题
公开接口(健康检查、静态资源、开放数据)应列入白名单并在报告中说明,避免把所有匿名可访问端点都判为缺陷。
接口版本差异是常见漏点:老版本常为了兼容遗留客户端而放宽校验,检查时要把全部版本路径都纳入矩阵。

易错点

  • 把所有匿名可访问端点都判为缺陷:未核对业务语义与白名单,误报会削弱整份报告的说服力
  • 只测一个端点或一个版本:接口版本与网关路由差异会让结论失效
  • 遗漏注销后的令牌重放:会话失效不彻底往往比认证缺失更贴近实际风险
  • 忽略内部直连端口:绕过网关直连服务的入口通常没有认证层

数据来源与参考

  • OWASP API Security Top 10(API2)
  • OWASP ASVS V2
​‌‌​​‌​​​‌‌​‌‌‌‌​‌‌​​​‌‌​‌‌‌​​‌‌​​‌​‌‌‌​​‌‌‌​​​‌​‌‌​‌​​‌​‌‌‌​​​‌​‌‌​‌​​‌​‌‌​​​‌‌​‌‌‌​‌​​​‌‌​‌‌‌‌​​‌​‌‌‌​​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌​‌‌​‌