商城项目处理“横向越权”问题。(自定义注解aop的方式)
2018-02-26 18:56
716 查看
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)定义一个切面,环绕通知
2)切点注解类
3)需要的地方,手动注入,并填写自定义的切点类。
4)spring-mvc-servlet中添加aspectj(因为注解是在contrlloer中加的)
完成。
zhulong88 登录后,直接在地址栏输入 zhulong121的某个订单查看url。结果被拦,跳转到自己的订单列表页。
横向越权:横向越权指的是攻击者尝试访问与他拥有相同权限的用户的资源
纵向越权:纵向越权指的是一个低级别攻击者尝试访问高级别用户的资源
例子:用户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)定义一个切面,环绕通知
2)切点注解类
3)需要的地方,手动注入,并填写自定义的切点类。
4)spring-mvc-servlet中添加aspectj(因为注解是在contrlloer中加的)
完成。
zhulong88 登录后,直接在地址栏输入 zhulong121的某个订单查看url。结果被拦,跳转到自己的订单列表页。
相关文章推荐
- 工作总结(商城项目)----aop自定义注解实现的日志管理
- UITableViewCell重用问题,自定义与非自定义cell的两种处理方式
- SpringAOP拦截Controller,Service实现日志管理(自定义注解的方式)
- SpringAOP拦截Controller,Service实现日志管理(自定义注解的方式)
- SSH集成项目,使用注解方式,竟然还有这样的问题!!
- 面向对象的设计方式处理Android编程中的GridView问题,以及自定义ListAdapter的使用
- SpringAOP拦截Controller,Service实现日志管理(自定义注解的方式)
- SpringAOP拦截Controller,Service实现日志管理(自定义注解的方式)
- java SpringAOP拦截Controller,Service实现日志管理(自定义注解的方式)
- SpringAOP拦截Controller,Service实现日志管理(自定义注解的方式)
- 面向对象的设计方式处理Android编程中的GridView问题,以及自定义ListAdapter的使用
- SpringAOP拦截Controller,Service实现日志管理(自定义注解的方式)
- SpringAOP拦截Controller,Service实现日志管理(自定义注解的方式)
- 面向对象的设计方式处理Android编程中的GridView问题,以及自定义ListAdapter的使用
- java SpringAOP拦截Controller,Service实现日志管理(自定义注解的方式)
- java SpringAOP拦截Controller,Service实现日志管理(自定义注解的方式)
- SpringAOP拦截Controller,Service实现日志管理(自定义注解的方式)
- springAOP自定义注解方式实现日志管理
- java SpringAOP拦截Controller,Service实现日志管理(自定义注解的方式)