OAuth 2.0实战课 08 笔记

学习极客时间王新栋的《OAuth 2.0实战课》笔记。

OAuth2.0可能导致的安全漏洞

CSRF 攻击

CSRF 的定义,《OAuth 2 in Action》这本书里的解释,目前看到的最为贴切的解释:恶意软件让浏览器向已完成用户身份认证的网站发起请求,并执行有害的操作,就是跨站请求伪造攻击。
攻击者A构造的链接:


<html>
<img src ="https://time.geekbang.org/callback?code=codeA">
</html>

在这里插入图片描述

解决方法:
OAuth 2.0 中也有这样的建议,就是使用 state 参数,它是一个随机值的参数。
当请求授权码的时候附带一个自己生成 state 参数值,同时授权服务也要按照规则将这个随机的 state 值跟授权码 code 一起返回给极客时间。这样,当极客时间接收到授权码的时候,就要在极客时间这一侧做一个 state 参数值的比对校验,如果相同就继续流程,否则直接拒绝后续流程。那么软件 A 要想再发起 CSRF 攻击,就必须另外构造一个 state 值,而这个 state 没那么容易被伪造。

XSS 攻击

XSS 攻击的主要手段是将恶意脚本注入到请求的输入中,攻击者可以通过注入的恶意脚本来进行攻击行为,比如搜集数据等。
在这里插入图片描述
大多数情况下,受保护资源都是把输入的内容,比如 app_id invalid、access_token invalid ,再回显一遍,这时就会被 XSS 攻击者捕获到机会。
解决方法:
具体的修复方法跟其它网站防御 XSS 类似,最简单的方法就是对此类非法信息做转义过滤,比如对包含

水平越权

水平越权是指,在请求受保护资源服务数据的时候,服务端应用程序未校验这条数据是否归属于当前授权的请求用户。
在这里插入图片描述
商家 A 和商家 B 分别给小兔打单软件应用做了授权,也就是说,小兔打单软件可以获取商家 A 和商家 B 的订单数据。此时没有任何问题,但是风险是商家 A很有可能获取商家 B 的订单数据(如果受保护资源服务没有对商家 ID 和订单 ID 做归属判断,就有可能发生商家 A 获取商家 B 订单数据的问题,造成水平越权问题):
在这里插入图片描述

授权码失窃

如果第三方软件 A 有合法的 app_id 和 app_secret,那么当它去请求访问令牌的时候,也是合法的。这个时候没有任何问题
在这里插入图片描述
授权服务在进行授权码校验的时候,没有校验 app_id_B;
软件 B(也就是极客时间)使用过一次 codeB 的值之后,授权服务没有删除这个 codeB;
授权码失窃可能方法:重定向 URI 被篡改,流程如下:
在这里插入图片描述

总结

这些安全问题,本身从攻击的“技术含量”上并不高,但导致这些安全风险的因素,往往就是开发人员的安全意识不够。比如,没有意识到水平越权中的数据归属逻辑判断,需要加入到代码逻辑中。
在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值