功能级授权检查查什么
认证解决「你是谁」,授权解决「你能做什么」。功能级授权缺陷指的是低权限主体能调用管理侧的功能端点:用户管理、配置修改、批量操作、审批与导出。这类问题常见于前后端分离系统——前端按角色隐藏了按钮,但服务端接口没有做接口级权限校验。检查方法是拿到管理侧端点清单,用低权限账号逐个重放,先读后写,逐条记录放行情况。
基本信息
| 对象 | 管理端点、批量操作、配置类与导出类接口 |
|---|---|
| 方法 | 用低权限会话重放管理侧请求,先读后写 |
| 端点清单来源 | 接口文档、抓包流量、网关配置、前端资源包 |
| 常见盲区 | GraphQL 与 RPC 接口、移动端保留的管理入口 |
| 修复方向 | 接口级权限点与角色绑定,默认拒绝 |
典型使用场景
- 越权类评估的核心项,覆盖率直接影响报告质量
- SaaS 与多租户系统的租户隔离核查
- 评估权限模型是否按接口实现,而非仅靠前端隐藏
- 旧版客户端接口核查:为兼容保留的管理入口风险最高
- 修复验证:确认默认拒绝策略已覆盖全部管理端点
验证步骤
验证步骤
# 1. 从管理侧收集端点清单:文档、流量、网关配置、前端资源包
# 2. 用低权限账号逐个重放(先只读,确认后再评估写操作)
curl -s -H 'Authorization: Bearer <低权限账号令牌>' https://api.example.com/v1/admin/users | head -5
curl -s -o /dev/null -w 'low-priv write %{http_code}\n' -X POST \
-H 'Authorization: Bearer <低权限账号令牌>' https://api.example.com/v1/admin/users -d '{}'
# 3. 记录放行端点、返回内容特征与数据范围(是否仅本租户)
# 4. 与权限设计文档比对差异;写操作确认以最小影响方式完成响应与判断
| 响应 | 含义 | 处置 |
|---|---|---|
| 403 或无权限提示 | 接口级授权生效 | 记录为已核查 |
| 200 且返回全量管理数据 | 功能级授权缺失 | 列缺陷并评估数据范围与影响 |
| 200 但仅返回本租户数据 | 存在行级隔离,功能级待确认 | 区分功能授权与数据隔离分别记录 |
| 404 或 405 | 该角色不可达或方法不支持 | 核对是否为路由级隐藏,需换路径验证 |
移动端与旧版客户端常保留管理功能入口:这些接口为了兼容性往往校验最松,应优先纳入清单。
网关层与业务层权限校验不一致是常见情况:网关放行后业务层是否再校验,必须用低权限账号实测确认。