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

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

对于纵向越权,我们可以通过设置用户角色,为不同的角色提供不同的权限来避免。

对于横向越权,就比较麻烦了,横向越权可能出现的场景有:在用户忘记密码重置密码时,回答对了问题进入密码重置阶段时,如果知道其他用户的用户名,很容易改变此用户的密码,然后就可以进行越权访问了。

这种情况下为了防止横向越权,我们可以使用缓存来进行辅助,当问题回答正确时,我们在缓存中存储一对由用户名和一个唯一的数字组成的数据,然后返回放入的唯一数据。在重置密码时我们的参数不仅需要用户名和密码还需要前面生成的唯一数字,根据用户名在缓存中取出对应的数字,如果取出的数字和参数中传入的想等,则证明重置的当前用户的密码,否则不是,且不予以重置。

重置密码回答问题

public ServerResponse<String> checkAnswer(String username, String question, String answer){int resultCount = userMapper.checkAnswer(username, question, answer);if(resultCount>0){//说明问题及问题答案是用户的,并且是正确的String forgetToken = UUID.randomUUID().toString();//放入缓存TokenCache.setKey(TokenCache.TOKEN_PREFIX+username, forgetToken);return ServerResponse.createBySuccess(forgetToken);}return ServerResponse.createByError("用户答案错误");}

重置密码

 public ServerResponse<String> forgetResetPassword(String username, String passwordNew, String forgetToken){if(StringUtils.isBlank(forgetToken)){return ServerResponse.createByError("参数错误,Token需要传递");}ServerResponse validResponse = this.checkValid(username, Const.USERNAME);if(validResponse.isSuccess()){return ServerResponse.createByError("用户不存在");}//使用Cache而不使用session是因为当应用程序结束时,如果缓存的失效时间未到,则下次启动程序时,缓存数据依然存在//但是Seesion中的数据只保存在一次会话中,session容易丢失不够安全,而Cache不会出现这种问题String token = TokenCache.getKey(TokenCache.TOKEN_PREFIX+username);if(StringUtils.isBlank(token)){ServerResponse.createByError("token无效或过期");}if(StringUtils.equals(token, forgetToken)){String md5Password = MD5Util.MD5EncodeUtf8(passwordNew);int resultCount = userMapper.updatePasswordByUsername(username, md5Password);if(resultCount>0){return ServerResponse.createBySuccess("修改密码成功");}}else{return ServerResponse.createByError("token错误,请重新获取修改密码的token");}return ServerResponse.createByError("密码更新失败");}

横向越权、纵向越权问题解决相关推荐

  1. 横向越权访问java_横向越权纵向越权安全漏洞的解决

    一.什么是横向越权和纵向越权. 1.横向越权:攻击者想访问与他权限相同的用户,例如:在忘记密码回答问题成功后,会跳到重设密码的页面,这个时候如果用户随意填用户名和密码,而且数据库也刚刚好存在这个用户时 ...

  2. 如何解决水平越权(横向越权)和纵向越权

    目录 水平越权(横向越权) 采用token+手机号解决水平越权 纵向越权 纵向越权解决方法 水平越权(横向越权) 水平越权指的是获取了同级别用户的权限:例如A登陆自己的商城,却能够看到B的订单. 采用 ...

  3. web应用水平越权(横向越权)和垂直权限(纵向越权)问题

    1. 基本概念 1.1 横向越权 横向越权:横向越权指的是攻击者尝试访问与他拥有相同(级别或角色)权限的用户的资源. 1.2 纵向越权 纵向越权:纵向越权指的是一个低级别(低权限)攻击者尝试访问高级别 ...

  4. java项目横向越权_横向越权、纵向越权问题解决

    横向越权:横向越权指的是攻击者尝试访问与他拥有相同权限的用户的资源 纵向越权:纵向越权指的是一个低级别攻击者尝试访问高级别用户的资源 对于纵向越权,我们可以通过设置用户角色,为不同的角色提供不同的权限 ...

  5. 横向越权与纵向越权区别

    横向越权:横向越权指的是攻击者尝试访问与他拥有相同权限的用户的资源 纵向越权:纵向越权指的是一个低级别攻击者尝试访问高级别用户的资源 如何防止横向越权漏洞: 可通过建立用户和可操作资源的绑定关系,用户 ...

  6. 横向越权和纵向越权(水平越权、垂直越权)

    越权:顾名思义,就是获得了本不应该有的权限. 我们都喜欢创造一些复杂的词汇,而实际上这些词就是一个代词,根本没有那么复杂. 越权漏洞往往是基于业务逻辑的漏洞,这样的漏洞很难被WAF保护. 越权的分类 ...

  7. java项目横向越权,水平、垂直权限问题(横向越权与纵向越权)

    标签: 横向越权与纵向越权 横向越权:横向越权指的是攻击者尝试访问与他拥有相同权限的用户的资源 纵向越权:纵向越权指的是一个低级别攻击者尝试访问高级别用户的资源 如何防止横向越权漏洞: 可通过建立用户 ...

  8. php 水平越权,水平越权与垂直越权

    越权漏洞 越权访问(Broken Access Control,简称BAC)是Web应用程序中一种常见的漏洞,由于其存在范围广.危害大,被OWASP列为Web应用十大安全隐患的第二名. 该漏洞是指应用 ...

  9. HighNewTech:横向、纵向动图查看《Why资本寒冬》——根据中国四大行每年(2004年~2018年)贷款主要流向来看当下的资本寒冬

    High&NewTech:横向.纵向看资本寒冬--根据中国四大行每年(2004年~2018年)贷款主要流向来看当下的资本寒冬 导读 资本寒冬,并不代表没有机会,相反,好机会将会更加沉淀,带来的 ...

最新文章

  1. 数学建模 概率论与数理统计
  2. Mysql服务器问题(2013.3.5日发现)
  3. java性能分析与问题定位 实战
  4. java Dated Dateformat Calendar
  5. K8S部署工具:KubeOperator主要概念
  6. arm Linux 中断管理机制
  7. 不安装cudnn可不可以_Linux非root用户如何优雅的安装cuda和cudnn
  8. qt5 操作mysql 代码_qt5使用mysql
  9. 【白皮书】2020中国MCN行业发展研究白皮书.pdf(附下载链接)
  10. Leetcode每日一题:16.3sum-closest(最接近的三数之和)
  11. xssProject在java web项目中应用
  12. 0-9 倒计时 8x8 点阵 实现
  13. WPF :MVVM简介
  14. 红色学校网站模板_学校网站源码_适用高中,中学,小学学校网站建设
  15. 计算机sci审稿意见,【小木虫SCI秘籍】感悟之二——一个审稿意见的回复 - 论文投稿 - 小木虫 - 学术 科研 互动社区...
  16. 关于Java八种原始数据类型
  17. Linux系统性能监测工具——CPU
  18. python输入abcd输出对应的1234_python语法部分
  19. Python如何获取 Jenkins构建日志
  20. 小白重装系统教程_讲解小白装机大师使用教程

热门文章

  1. java 类名方法_Java学习——根据类名获取方法名,并调用方法
  2. TypeScript 获取类名
  3. Java中的锁-浅析
  4. ip addr 命令内容细解
  5. 现在什么样的人最适合做程序员呢?来看看我了解的几类人趴。
  6. prophet踩坑日记
  7. 三轮全向底盘实现绘图功能
  8. 服务器XP系统打印机共享设置,xp打印机共享怎么设置 xp打印机共享设置方法【详细介绍】...
  9. TIDB-dm-数据同步初步搭建
  10. 2023TMEA腾讯音乐娱乐盛典举办 蔡依林张靓颖周深等现场演唱