[auth2.0认证]百度开放平台oauth授权接口可以劫持access_token:并没有完全按照Oauth2.0的标准来做造成的。

jackxiang 2013-5-14 16:22 | |
背景:  要点是:各互联网公司的业务在对Oauth2.0的实现上并没有完全按照Oauth2.0的标准来做。  我最近也在研究这一块发现确实也有这样的问题,作下备案。

Oauth2.0相比较Oauth1.0步骤简化,通过HTTPS和限制回调地址来提高安全性。但是各互联网公司的业务在对Oauth2.0的实现上并没有完全按照Oauth2.0的标准来做。所以就会有一些问题存在。比如对回调地址限制不严格就会造成问题。

详细的步骤如下:
1、结合www.hack6.com
2、百度账号可以登录qunar网站,通过百度账号连接服务
3、授权模式中的Implicit grant模式只需要client_id和redirect_uri就可以完成账号的授权流程,从而把获取到的access_token返回到redirect_uri页面中
4、构造如下的URL:
http://openapi.baidu.com/oauth/2.0/authorize?scope=super_msg&response_type=token&client_id=RCKbWANx8KewnXs9rwGWFtZV&redirect_uri=http://lvtu.qunar.com/mobile_ugc/web/album.htm?albumId=4228

client_id为qunar网的百度应用ID
redirect_uri为获取access_token后的回调地址
response_type=token是采用Implicit grant授权模式
scope为申请的权限
5、可以把该地址发给他人诱使别人连接,最方便的利用是结合点击劫持来让用户完成授权流程。从而劫持到用户的access_token
6、获取到的token可以利用api接口来操作该账号(百度的api少的可怜)。

下面图是劫持后的。



修复方案:

1、最好是严格限制redirect_uri,我知道很难。
2、可以在授权页面加入放点击劫持代码,降低风险

----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
现在访问第四步里构造如下的URL地址,出现如下提示:
    错误码:1107
    错误信息:Invalid Referer
    详细描述:当前页面的Referer错误。使用Implicit Grant方式获取Access Token时,Referer必须与应用的根域名绑定同域,请在开发者在应用安全设置中进行绑定。

本文章原创来自:http://www.hack6.com/wzle/gf/2012/baidukaifangpingtaioauthshouquanjiekoukeyijiechiaccess_token_2525525255.html

作者:jackxiang@向东博客 专注WEB应用 构架之美 --- 构架之美,在于尽态极妍 | 应用之美,在于药到病除
地址:https://jackxiang.com/post/6356/
版权所有。转载时必须以链接形式注明作者和原始出处及本声明!


最后编辑: jackxiang 编辑于2013-5-14 16:41
评论列表
发表评论

昵称

网址

电邮

打开HTML 打开UBB 打开表情 隐藏 记住我 [登入] [注册]