SpringBoot + 接口参数越权访问防护:用户 A 能查用户 B 数据?自动拦截。
一、接口参数越权访问的痛点 上周,一位做电商系统的朋友向我求助:他们的系统出现了用户可以查看其他用户订单的严重问题。 "用户反映可以看到别人的订单详情,"朋友焦急地说,"我们使用了 Spring Security 做权限控制,但用户只要知道订单 ID,就能通过 API 查看任意订单。" 我查看了他们的代码,发现问题确实很严重: 使用标准的 RESTful API 设计 接口参数直接暴露数据库主键 没有任何资源归属验证 权限控制只验证了用户是否登录 没有验证资源是否属于当前用户 更关键的是,他们根本不知道有多少用户数据被越权访问,也无法及时发现和处理这种安全问题。 二、传统方案的局限性 1. 基于角色的权限控制(RBAC) 使用 Spring Security 的 RBAC 进行权限控制。 @Configuration @EnableWebSecurity public class SecurityConfig extends WebSecurityConfigurerAdapter { @Override protected void configure(HttpSecurity ....