商城项目处理“横向越权”问题。(自定义注解aop的方式)

 1.什么是横向越权?

横向越权:横向越权指的是攻击者尝试访问与他拥有相同权限的用户的资源 

纵向越权:纵向越权指的是一个低级别攻击者尝试访问高级别用户的资源

例子:用户a,和用户b都可以查看订单。但是用户a不正当获取到用户b的查看订单url后,就可以访问b的订单情况。

2.我们怎么做的。

   涉及到用户的个人信息,都需要防止横向越权。 “个人基本信息”“购物车”“订单”“收藏”...

   思路( a.加一个passkey,来校验):

在返回列表数据之前后台进行一次循环处理,page.list中的entity/vo 增加一个passKey属性,用于存储MD5签名字符串,签名规则可以是 当前登录用户userGuid+entity/vo的主键,进行MD5运算,将MD5值存储到  passKey属性中,一起返回到前端页面。

列表页中的“操作”列中,可能会有,修改,删除,查看,审核等操作。

不管是什么操作,必传的参数肯定要有一个主键的参数,在此基础上再传一个passKey的参数过去。

 

后台验证:比如点击“查看”按钮,传入的参数有xxxGuid=a&passKey=b,后台接到这两个参数后先进行MD5签名哈希验证,验证步骤为:

1、String  md5str =  getMD5(当前登录用用户userGuid+xxxGuid);

2、if(  md5str不等于 passKey  ){

       返回错误页或者给出相应的提示。

   }

  b.为了做成统一的,我们面向切面编程。

-----------------------------------

3.具体实现:

1)定义一个切面,环绕通知

商城项目处理“横向越权”问题。(自定义注解aop的方式)_第1张图片

商城项目处理“横向越权”问题。(自定义注解aop的方式)_第2张图片

2)切点注解类

商城项目处理“横向越权”问题。(自定义注解aop的方式)_第3张图片

3)需要的地方,手动注入,并填写自定义的切点类。

商城项目处理“横向越权”问题。(自定义注解aop的方式)_第4张图片

4)spring-mvc-servlet中添加aspectj(因为注解是在contrlloer中加的)

商城项目处理“横向越权”问题。(自定义注解aop的方式)_第5张图片


完成。


zhulong88 登录后,直接在地址栏输入 zhulong121的某个订单查看url。结果被拦,跳转到自己的订单列表页。

商城项目处理“横向越权”问题。(自定义注解aop的方式)_第6张图片



你可能感兴趣的:(spring,技术生活)