数据鉴权方案,防止通过token操作他人数据

410 阅读1分钟

一、概述


用户登录后可获得token,因后端接口没做数据权限校验,技术人员可拿到这个token通过请求工具修改参数去操作他人数据(例如修改库存操作,将库存id改为他人id模拟请求), 原则上所有非列表查询的接口都需做数据鉴权 ,对于saas平台更为必要。


二、具体方案


方式1:


例如取消订单操作,用户拿到订单id后,每次都去数据库进行查询所有权的规则判定(是否本人单据或本店铺单据)

\


方式2:

后端需要数据鉴权的接口增加以下注解 @ValidateDataAccess 自定义拦截器拦截这个注解并解析

采用对称加密的方式,前端请求参数增加 "passKey" (此参数需后端在前置接口中提前返回)

例如取消订单操作,这个接口因为需要做数据鉴权,前端除了传参数订单id外还需传passKey , 这个passKey在订单列表查询时已一并返回,每行订单对应的passKey不同,后端统一在后端做拦截鉴权处理


image.png

优点:每次鉴权无需访问数据库,性能高

备注:对于嵌套List的复杂请求对象暂时未做处理,待后续有时间做进一步优化