当自己的前端授权完之后,授权服务会跳转回第三方前端,url是 https:xxx?code=xxx;
然后自己的前端拿code去请求自己的登录接口,自己的服务在和授权服务校验,并且登陆;
假如我是攻击者,我是可以拦截得到code的,也可以知道code请求登陆的接口,那其实就可以抓取code去请求一次登录接口了,从而获取用户信息了;
因为code只能用一次,我还可以把用户的请求给拦截调,让我抓取code的请求成功
那这样且不是很不安全??
当自己的前端授权完之后,授权服务会跳转回第三方前端,url是 https:xxx?code=xxx;
然后自己的前端拿code去请求自己的登录接口,自己的服务在和授权服务校验,并且登陆;
假如我是攻击者,我是可以拦截得到code的,也可以知道code请求登陆的接口,那其实就可以抓取code去请求一次登录接口了,从而获取用户信息了;
因为code只能用一次,我还可以把用户的请求给拦截调,让我抓取code的请求成功
那这样且不是很不安全??
你这个问题的前提是,你还通过啥渠道,拿到了人家的app-secret ,不然你拿到了code,去换token这一步,你的请求签名是过不了的,签名算法中需要app-secret参与,没有app-secret,你就算是拿到了token都没用
OAuth2 一个应用层之上的玩意儿,为啥要考虑应用层甚至传输层的安全问题?
上层的任何保护手段都防范不了下层的安全漏洞,学过 OSI 五层/七层模型的话这个问题就不应该提问。
毕竟到了会话层你可以劫持会话、数据链路层你还可以劫持比特流,你咋防 code 都能泄露,你说 OAuth2 咋去解决?
但是凭啥要 OAuth2 解决?
10 回答11.3k 阅读
5 回答4.9k 阅读✓ 已解决
4 回答3.2k 阅读✓ 已解决
2 回答2.8k 阅读✓ 已解决
3 回答5.2k 阅读✓ 已解决
4 回答4.5k 阅读✓ 已解决
1 回答3.4k 阅读✓ 已解决
所以要上 https 嘛!
Https 的流量是经过加密的,攻击者想要拦截到 url 里的 code ,首先要攻破 Https 的加密层。所以也就是说你需要做到 Https 中间人攻击喽。
而浏览器是会检查服务器的证书的,所以说攻击者需要事先把他的根证书装到受害者的电脑。
OAuth 不用去考虑 http 协议本身的安全,因为它是 Https 要考虑的事。