越权与访问控制

400 字

越权与访问控制

越权的核心问题是:用户能不能访问、修改、删除不属于自己的资源,或执行不属于自己角色的动作。

两类越权

类型 含义 例子
水平越权 同级用户访问彼此资源 A 用户查看 B 用户订单
垂直越权 低权限用户执行高权限动作 普通用户调用管理员接口

越权通常出现在对象 ID、订单号、用户 ID、文件 ID、组织 ID、角色参数、接口路径和前端隐藏功能中。

怎么观察

准备至少两个不同用户,最好再准备不同角色。登录后记录正常请求,替换资源标识、组织标识或角色相关参数,观察服务端是否只依赖前端隐藏、按钮显示或 URL 控制。

安全的访问控制应该在服务端按“身份、角色、资源归属、动作权限、数据范围”共同判断。只在前端隐藏菜单,或者只校验是否登录,都不够。

防护要点

每个接口都要独立鉴权,尤其是查询、导出、下载、修改、删除、审批和管理动作。资源访问用服务端查询出的归属关系判断,避免把 user_idroleis_admin 等关键值交给客户端决定。

Licensed under CC BY-NC-SA 4.0