垂直权限漏洞与水平权限漏洞

1 篇文章 0 订阅
0 篇文章 0 订阅

一、水平权限漏洞

简单举例:假设A可以更改1 2 3三条数据 而B可以更改 2 3条数据。

那么我们一般会怎么做呢,会让用户A查询到123条数据,而用户B查询到23条数据

但是一般情况下,我们是对接口做的做的权限验证 此时B权限会拿到23条数据,那么B提交修改的时候只需要将修改的id更改成1的id即可(很多情况下我们会使用主键自增长的方式),所以很容易出现问题。

修复方案0:

先看一个有问题的方案:将addressid改成一个具有一定长度的随机字符串,如5d41402abc4b2a76b9719d911017c592,认为只有有权限的人才能得到这个入口,而且不能通过加1、减1的方式预测别人的入口,因此不再做进一步的权限检查(很多初级的招聘页面都是以这种方式来管理简历的)。这个方案看上去没有问题,可是和国内的环境结合起来就会悲剧——至少我遇到过的,搜狗浏览器会把用户发送的请求上传到服务器上,作为其搜索引擎爬虫的爬取源,这样爬虫就会通告查询操作得到相关的对象信息,并展示在搜索引擎上,如果对象信息包含敏感内容,则产生隐私泄露的安全事件。

 

修复方案1:

这个是最直接有效的修复方案:在web层的逻辑中做鉴权,检查提交CRUD请求的操作者(通过session信息得到)与目标对象的权限所有者(查数据库)是否一致,如果不一致则阻断。这个方案实现成本低、能确保漏洞的修复质量,缺点是增加了一次查库操作。我之前一直用这种方案来对已发生的水平权限漏洞做紧急修复。

 

修复方案2:

我认为最正规的方案:把权限的控制转移到数据接口层中,避免出现select/update/delete ... where addressID=#addressID#的SQL语句,使用selectt/update/delete... where addressID=#addressID# and ownerId=#userId#来代替,要求web层在调用数据接口层的接口时额外提供userid,而这个userid在web层看来只能通过seesion来取到。这样在面对水平权限攻击时,web层的开发者不用额外花精力去注意鉴权的事情,也不需要增加一个SQL来专门判断权限——如果权限不对的话,那个and条件就满足不了,SQL自然就找不到相关对象去操作。而且这个方案对于一个接口多个地方使用的情况也比较有利,不需要每个地方都鉴权了。但这个方案的缺陷在于实现起来要改动底层的设计,所以不适合作为修复方案,更适合作为统一的控制方案在最开始设计时就注意这方面的问题。

 

修复方案3:

今天开发同学提到一种我之前没想到过的方式,实际上是对方案1的修改:在生成表单时,增加一个token参数,而token=md5(addressId+sessionId+key);在处理请求时,用addressId、sessionId和key来验证token。这样的方案实现起来很简单,又不增加额外的SQL查询开销,看起来比方案1更好。可我之前没有想到过这种方案,乍一看又是把鉴权和操作这一串同步的操作异步化了(实际上是在生成表单的时候鉴权并生成token,然后在操作时只验证token而不鉴权),所以一时还拿不准这样会不会有啥问题~不过我是想了半天也找不到漏洞哈~

 

修复方案4:

把这种属主、权限、对象、操作的场景抽象成一个统一的框架,在框架内一个地方实现权限的管理和检查。当然这个说起来有点扯淡了,在产品设计阶段是不是有人愿意花大成本来设计相关框架呢?如果最开始没有框架,那么什么时候愿意花更大的成本去迁移呢?我想最终还是会按方案1、2、3来吧。

总结:方案0是不可行方案。

          方案一:说是在web层逻辑中做鉴权限,只能把1数据从数据库中取出,并判断该用户时候有查询该数据的权限,所以说是可以的。

         方案二:是可行的在service中进行校验即可

         方案三:可行,在服务端生成md5参数,并将参数作为token传入到页面,页面提交的时需要提交token及id,提交上来再用md5进行验证一次,就知道该数据是不是页面显示的数据了。

 

二、垂直权限漏洞

指的是没有对访问接口做权限验证。

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
国微CMS学校网站系统是一个以php MySQL进行开发的学校网站系统。国微学校方案重点为大学、中学、技校提供高性能解决方案,可快速将学校信息化迈入实用高效的水平。功能包括:精品课程系统、录取查询系统、学籍查询系统、教 师名录查询系统、招生系统、文章模块、视频模块、图片模块、下载模块、问答系统、表单系统、在线办事系统、广告模块、服务反馈体系、手机群发平台、邮件群 发平台、用户体系、在线招聘平台、留言本等模块。 国微CMS学校网站系统(PHP168 S系列) v20180925 更新日志 1、新增可以自由开启内网和外网访问。 2、新增了每个栏目IP访问、内容IP访问控制。 3、搜索集约化处理;更加方便方向代理。 4、cook进行了加密。 5、其余10余项项目此安全优化。 国微CMS学校网站系统注意事项 1、后台超管添加附件类型得到控制,只允许 rar zip png jpg gif swf pdf doc docx xls xlsx mp4 flv CSV常规附件类型 2、后台编辑模板方面,如果网站完成,我们通过上传一个配置文件,就关闭掉后台编辑模板功能。如果要开启,需要进入服务器,开启才行。类似强制登陆那种模式。 3、后台登陆可以开启不断变化的验证码(安全码也保留)。 4、后台密码必须要8位(不影响现在的密码体系前提下,因为很多超管密码给分站管理员后,都改为简单容易记住的) 国微CMS学校网站系统功能 系统体系化 模块化体系:所有功能均已系统化、模块化、插件化,如CMS、问答、广告、标签 用户体系: 不仅区分企业、个人,并可自由添加角色组与角色,使其用户体系与实体一致。 权限体系: 所有功能模块封装并与权限匹配,可以细化至栏目对接角色管理权限。 标签体系: 常规标签、变量标签、标签后缀、标签缓存体系等已全面实施。 模板体系: 从方案模板、会员中心、系统模块模板、栏目、列表页面、内容页完全可独立选择。 积分体系: 积分兑换、积分消费、积分规则等已经开始在系统内实施。 菜单体系: 后台菜单、前台菜单、会员中心菜单均可自由添加和控制。 安全体系: 支持IP黑名单、白名单、支持防CC攻击、支持批量过滤敏感词汇。 通讯体系: 手机模块、邮件模块、短消息模块均已做成接口模式,任意功能均可方便调用。 程序整合体系:将支持PHPwind、UC、PHP168自身等系统整合,同时互动百科也将整合。   易用性: A、全部前台可视化操作,可视即可操作。 B、一键化应用:如一键安装、一键缓存、一键静态、一键更换模板。 C、标签样式不断增加,只需用鼠标选择想用的样式即可。 D、自由组装和拆卸模块与插件。 E、掌握时间1小时学会建站。 国微CMS学校网站系统前台页面 国微CMS学校网站系统后台管理 后台登陆路径:域名/admin.php  后台登陆用户名与密码是在安装过程中设置的,要谨记 后台页面   相关阅读 同类推荐:站长常用源码

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值