1.What——什么是横向越权?
横向越权:横向越权指的是攻击者尝试访问与他拥有相同权限的用户的资源
纵向越权:纵向越权指的是一个低级别攻击者尝试访问高级别用户的资源
例:用户A无法访问到北京区域的用户详情,用户A没有重置北京区域用户密码的权限。
但是通过获取到重置密码的接口url和对应用户的userid,用他的token执行重置密码的接口。重置成功!!!???
2.Why——出现原因是什么?
问题出现根本原因是:
Java后端没有对相应的接口做相应的防止横向越权措施。
3.How——怎么找出有横向越权问题的接口?
测试过程:
1、与产品沟通,整理出所有用户权限相关的重要接口
2、使用带有修改权限的A用户的token跑一遍
3、使用未带有权限的B用户的token跑一遍
具体操作如下(使用jmeter):
1、新建一个HTTP信息头管理器,将请求头必须变量写入(token)
2、将整理的所有重要接口分别新建http请求并写入
3、使用带有权限的token跑所有接口,全部可以执行
4、使用未带有权限的token跑所有接口,全部不可以执行
5、找到有横向越权问题的接口,整理并反馈给开发
身为一个测试人员,在新需求有新增接口的情况下,思考的不仅是新增功能的实现,还有接口性能和安全,如果提前测试,就可以减少更多线上问题反馈。
例:新增一个删除资产功能
功能:能正常删除、批量删除,数据库,存储对应资产均被删除
性能:批量100,200,300等梯度删除
安全:使用一个账号的token执行删除另一个账号的资产是否成功
出现问题:使用一个账号的token执行删除另一个账号的资产成功
解决方法,前端在执行删除操作时传入userid,后端通过token和userid作比对
原文地址:https://www.cnblogs.com/rachelxiao/p/12168226.html