OAuth2 不安全设想

当自己的前端授权完之后,授权服务会跳转回第三方前端,url是 https:xxx?code=xxx

然后自己的前端拿code去请求自己的登录接口,自己的服务在和授权服务校验,并且登陆;

假如我是攻击者,我是可以拦截得到code的,也可以知道code请求登陆的接口,那其实就可以抓取code去请求一次登录接口了,从而获取用户信息了;

因为code只能用一次,我还可以把用户的请求给拦截调,让我抓取code的请求成功

那这样且不是很不安全??

阅读 3.1k
3 个回答

所以要上 https 嘛!

Https 的流量是经过加密的,攻击者想要拦截到 url 里的 code ,首先要攻破 Https 的加密层。所以也就是说你需要做到 Https 中间人攻击喽。

而浏览器是会检查服务器的证书的,所以说攻击者需要事先把他的根证书装到受害者的电脑。

OAuth 不用去考虑 http 协议本身的安全,因为它是 Https 要考虑的事。

你这个问题的前提是,你还通过啥渠道,拿到了人家的app-secret ,不然你拿到了code,去换token这一步,你的请求签名是过不了的,签名算法中需要app-secret参与,没有app-secret,你就算是拿到了token都没用

OAuth2 一个应用层之上的玩意儿,为啥要考虑应用层甚至传输层的安全问题?

上层的任何保护手段都防范不了下层的安全漏洞,学过 OSI 五层/七层模型的话这个问题就不应该提问。

毕竟到了会话层你可以劫持会话、数据链路层你还可以劫持比特流,你咋防 code 都能泄露,你说 OAuth2 咋去解决?

但是凭啥要 OAuth2 解决?

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题