面试官:网络安全了解多少,简单说说?(五)

522 阅读6分钟

持续创作,加速成长!这是我参与「掘金日新计划 · 6 月更文挑战」的第14天,点击查看活动详情

写在前面

今天继续介绍一个主要出现在前后端接口定义的安全问题,我们都知道,为了使使用同一套系统的人能够进行不同的操作,我们常常会进行角色的设置,也就是说,我们前后端约定了一个接口规则,通过接口获取的角色进行对应的渲染,实现不同角色的人具有不同权限的操作,那么在前后端定义角色相关接口的时候,如果安全意识不足的话,那就很容易出现一个角色相关的安全漏洞,也就是我们今天所要介绍的————越权。

垂直越权

什么是越权,越权顾名思义就是进行了超越权限限制的操作,而越权又分为垂直越权和水平越权,垂直越权指的是通过一系列的操作,最终以权限较低的账户,实现权限较高的操作。

攻击过程

20220614003416.png

1、普通账号登录

所谓越权,那就是得从自己的权限超越到权限之外嘛,那么第一步也就是需要先获取自己的权限,然后再通过一些特殊手段进行越权,获得其他的权限。黑客首先通过网站注册等方式,获得普通账号,使用普通账号登录,主要也就获得普通账号权限了

2、抓包分析

抓包分析是安全分析非常重要的手段之一,在这里我们不过多介绍,后期有机会专门进行解析。黑客通过对登录过程进行抓包分析,分析出服务器向前端传输的角色为明文传输,确定了攻击方式

3、修改角色

黑客确认了角色为明文传输后,便可以开始进行越权了,首先黑客打开数据包拦截工具,对使用普通账户登录时服务器返回的响应包进行拦截,当拦截到响应包之后,对响应包中的角色对于的字段进行修改,将角色修改为管理员等高权限角色,随后放行响应包,于是前端收到了角色为管理员的响应包并进行对应的渲染操作,至此,也就成功通过垂直越权的方式将普通账号权限提升到了管理员角色对应的操作权限

经典案例

假设有一个知识付费网站,然后它的机制是这样子的,该网站上上传了许多非常有用的技术参考文章,非常干货,而如果想要阅读这些文章,非常简单,“亲,只要成为我们站的超级大VIP会员,即可无限次、无限制浏览任何文章哦!!”,当看到这,黑客白了好几眼,于是黑客首先注册了一个普通账号,随机开启压箱底的 bp,接着,黑客按正常程序登录账号,观察登录的请求包和响应包,这时黑客观察到了一个另他非常兴奋的字段,“isVip”,很显然,这个字段表明了账号是否为 VIP 用户,而前端通过该字段判断是否有权限阅读文章,从而进行相关文章的拉去和渲染。于是,黑客修改了响应包,将 “isVip:true”,最终完美收场!!

防范措施

很明显,对于这种越权,主要导致的原因是前后端过于“偷懒”,对于权限验证相关的东西没有做足工作,才导致了能够简单得绕过登录进行提权,那么可以怎样防范呢?很简单,其实主要就一个,对于角色控制相关的参数应该做加密处理,或者增加多个隐藏字段来进行权限相关的验证,只有这样,对于角色的控制,才能够做到更加安全可靠。

往期好文推荐

面试官:说说从输入 URL 到页面显示到底经历了什么,体现一下你的知识广度

面试官:作为前端,服务器相关了解多少?

面试官:HTTPS 采用的是对称加密还是非对称加密?具体说说其加密过程

面试官:说说 Cookie 和 Token 的区别?

面试官:网络安全了解多少,简单说说?(一)

面试官:网络安全了解多少,简单说说?(二)

面试官:网络安全了解多少,简单说说?(三)

面试官:网络安全了解多少,简单说说?(四)

面试官:网络安全了解多少,简单说说?(五)

面试官:网络安全了解多少,简单说说?(六)

面试官:网络安全了解多少,简单说说?(七)

面试官:网络安全了解多少,简单说说?(八)

浅尝 | 从 0 到 1 Vue 组件库封装

面试官:这么简单的正则表达式都不会?

Webpack 打包类库踩坑

面试官:你就只会 npm run build 吗?(Webpack 配置 Vue+Ts)

面试官:连VuePress都没搭过还说开发过组件库?(VuePress 搭建)

面试官: 连 Vue 视图更新都不会写?(Vue视图更新原理【一】)

面试官: 能不能手写 Vue 响应式?(Vue2 响应式原理【完整版】)

面试官:能不能手写 Vue3 响应式(Vue3 原理解析之响应系统的实现)

JS 优雅之道(JS 代码优化小 Tip)

面试官:你真的会用 SVG 吗? (SVG 应用实战)

面试官:说一下这个Loading动画实现思路 (CSS3 实现 Loading 动画)

JS 扫盲题 ( 面试题梳理系列 (一))

面试官:你确定你说的防抖不是节流吗?( 面试题梳理系列 (二))

面试官:除了 HTTP,你还用过什么通信协议?(Websocket 在数字孪生中的应用)

面试官:你真的理解 Event Loop 吗?( JS 事件循环 )

面试官:v-for 中 key 为什么不能用 index,从原理层面聊聊?

面试官:vue-router 的 hash 与 history 哪个模式会刷新页面?

面试官:说说你平时用过的自适应方案(数字孪生可视化自适应方案)

面试官:说一下如何优化过渡动画(数字孪生可视化过渡动画)

写在最后

博主接下来将持续更新好文,欢迎关注博主哟!!
如果文章对您有帮助麻烦亲点赞、收藏 + 关注和博主一起成长哟!!❤️❤️❤️