OAuth 的权限问题与信息隐忧

核心提示:以 QQ 登录和微博登录为表明的“一键登录”背后不只仅是登录这么简单,它还默认获取了你的其余隐私资料和帐号的部分使用权限,咱们在享受便利的同时必定不要忘记保护好咱们的我的信息安全。

去年3Q大战以后,开放几乎成为了最热的词汇,随后的国内互联网看似进入了开放平台的“蜜年”,各类基于开放平台的应用和社会化登陆也随之出现。浏览器

将自身的产品和服务与大网站平台对接,不只能省去注册等繁琐工做,不用为储存和传输大量的用户帐号信息而烦恼,还能够迅速的带来流量、用户资源,并 获得更好的推广。而对于平台来讲经过 API 支持协议能够获得不少的应用接入,能够为用户提供更多更好的服务。这对开发者和平台提供商来讲是共赢的局面。所以,QQ 登陆、各类微博登陆和 SNS 登录也彷佛成为了第三方网站或应用的必备按钮。(在昨天腾讯宣布其QQ登陆已经成为国内最大第三方账号登陆体系。)安全

原本利用已有的帐号登录这些第三方网站和应用是一件好的事情,由于从体验上来讲能够方便用户,可是国内这些“一键登录”真的是用户想的那样“一键登录”吗?咱们看到一个网站就用咱们的帐号登录难道没有隐患吗? 这些”登录“的背后的关键是什么?网站

若是你有够细心的话会发现全部登录基本都是弹出一个对应对话框,其地址栏中也都会包含有“OAuth”字样。这说明,其当前采用的是 OAuth 协议。在目前,不管是国外仍是国内,绝大部分都是采用 OAuth 协议来完成在第三方网站或应用的登录的。加密

OAuth 是什么?它有什么优势呢?为何都采用 OAuth?

OAuth(开放受权)是一个开放标准 ,容许用户让第三方应用访问该用户在某一网站上存储的私密的资源(如照片,视频,联系人列表),而无需将用户名和密码提供给第三方应用。via 维基百科视频

OAuth 的优势

OAuth 不会使第三方网站或应用接触到用户的账号信息(如用户名与密码),受权后的 http 通讯中也再也不传输用户信息而是以数字签名和访问令牌(Access Token)取代,即便截到数据包,也没法还原出用户的登陆信息。这是OAuth 最大的优势,也是它得以逐渐成为如今通用的受权标准的缘由。htm

OAuth 被普及的缘由

对用户来讲方便、安全;对中小第三方网站和应用来讲,OAuth 可使它们可以获得用户基本信息外的其余信息资料和帐户部分使用权限;对大网站平台来讲,OAuth 能够完美的解决用户的帐户安全和开发者受权的平衡问题。所以 OAuth 协议肯定后就得到了包括国外 Twitter、Facebook 和 Google 等承认,以后在国内也获得了有效跟进。blog

OAuth 受权的信息隐患

凡是只有其利就有其弊,OAuth 也不例外。为何在安全上看似天衣无缝的 OAuth 都有信息隐患呢?游戏

1. 被滥用了的 OAuth 受权

OAuth 是一个受权(authorization)协议而不是认证(authentication)协议,所以,对于 OAuth 来讲最大的信息隐患就是其自己。事件

OAuth 提供的是权限分配而非认证。在国内大多数网站的一键登录根本没有去区分认证和受权 ,所有混淆为受权。自己用相似 OpenID 的简单认证便可完成的事情却非要走受权。而一键登录在给用户带来便利的同时也带来了另外一个弊端:用户变得愈来愈不在乎本身的帐号。由于 OAuth 协议自己的安全给了咱们一种假象:别人获取不到个人帐号密码,因此个人帐户很安全。咱们要明白,受权自己的实质至关于系统为第三方网站/应用开了一个后 门,而你的受权就是容许它们能够走后门进来获取你的隐私资料和使用权限。ip

打个比方就是,虽然它们不知道你家的锁长什么样,也没有你家的钥匙,可是人家就是能进得去你家,还能够看你家的电话簿,用你家的电话给你的亲朋好友 打电话等。不少其实扮演的只是抄水表的角色,在门外瞅一眼便可,可是恰恰国内那些平台们把水表安到了你家里面,这样不少抄水表的就能够打着抄水表的借口从 后门去你家向你的亲朋好友宣传它水表抄的好,想继续去你亲朋好友家抄水表。

譬如一些小游戏和星座信息之类的第三方网站和应用,无一例外都会要求咱们受权给它们咱们的好友关系、生日、相册、评论、甚至地理信息位置。对于咱们 来讲,我的信息的安全不只仅是咱们的用户名和密码,那些“被受权”的都是信息安全的一部分,甚至是最重要的部分。前几天经过 QQ 圈子咱们也了解到了这些信息有多重要。

你受权的网站/应用越多,意味着越多的网站和应用可以接触到你的帐户资料并拥有部分使用权限,也意味着隐患越多。虽然它们并无获取到的你的帐户密 码,虽然你以后从未登录过或使用过它们,可是,除非你去隐藏很深的后台设置里面取消它们的权限,不然它们是一直可以接触到你的帐户资料并拥有你帐户的部分 使用权限的。

某种程度上说,OAuth 对咱们我的信息安全来讲是一扇隐形的窗户,并且这个窗户仍是默认永久开放的。

2. OAuth 使用的不规范

在不少时候,出问题的环节每每不是技术,而是背后使用技术的人。

1. 平台 OAuth 部署不规范

OAuth 部署是否规范,例若有无强制使用 https 加密,有无强制部署 OAuth 2.0。对移动应用的受权有无注意应用会自建浏览器,有无注意在信息回传过程当中的信息防御,这些都是须要考据的问题。OAuth 协议自己没有问题,可是对协议的用途是否规范值得商榷。

事实上,各开放平台之间的技术差别很大,所以每一个平台使用并非相同版本的协议,有 OAuth 1.0、OAuth 2.0 或混合的技术体系(甚至还有继续使用不安全的 Basic Auth)。此外,若是你去翻看一下国内各个开放平台的开发文档就会发现,虽然 OAuth 总体流程大体相似,可是对于受权的定义各家有各家的标准,对待开发者的态度各不相同,对受权的限制也是各家有各家的标准 ,对用户的帐号保护也是各有各的说法。

例如某家开发平台上对待涉及自身利益的时候用“严禁”“禁止”字眼,而涉及用户帐号利益的时候就变成了“不该”、“不鼓励” 等字样。再例如,对未审核应用、待审核应用和未经过审核应用的限制,国内只有两家平台对使用人数进行限制外,其余各家都只是稍微限制了一下调用频率次数和 不显示来源而已。

综合来看,国内的关于OAuth协议标准的实施部署是一个开发者和平台综合博弈的结果。

2. 应用开发者不自律

OAuth 的安全性至关一部分须要依靠应用开发者的高度自律,不应有的权限不去申请,可是事实并不是如此。正常状况下,平时咱们所用的 90% 的应用只需用只读权限便可,可是相反的是,只有 5% 的应用只拥有只读权限。对于开发者开说,尽可能获取到用户帐户的使用权限彷佛是一种”追求“,而无论用不用获得。这不只让人想起了 Android 移动应用上的广泛高权限。

3. 平台审核是否仔细

第三方网站或应用要接入平台须要经过平台的审核,审核是一层对开发者的把关。由于平台竞争的缘由,各家审核标准并不一致,实际操做更是谁也不清楚。整体来看,强势的平台限制严格,弱势的平台由于要吸引开发者因此不少事情睁一只眼闭一只眼。

4. 用户对 OAuth 的不设防

OAuth 协议的实施很相似微软平台下软件的安装,用户常常在一步步的点击中默认”被受权“,由于国内大多数用户暂时尚未注意防御本身帐户信息和权限的习惯。

咱们该注意些什么?该怎么作?

1. 防止 OAuth 钓鱼登录界面

注意观察弹出窗口是否为官方登录域名,要谨防假冒钓鱼。

2. 受权以前的三思

在你将本身的帐号权限受权给一个应用以前,先查清楚应用开发者的具体信息和他们的隐私保护条款,知道本身到底受权给了谁,到底给谁授予了哪些权限。

3. 定时清理你的第三方应用受权

要注意清理你的第三方应用受权,将那些可有可无的或已经再也不使用的第三方网站或应用取消受权,关上那扇隐形的窗户。

4.受权后注意其来源

受权第三方网站或应用后要注意查看其有没有经过官方平台的审核,若是来源显示来自”未审核应用“或相似字样后尽可能先取消其受权,待审核经过后再进行受权。

将来,国内应该分区开认证和受权,给用户减小没必要要的隐患,期待国内出现一个统一的OpenID(不像国外 OpenID 那样繁琐,或许相似 BrowserID 的东西),而不像如今,虽然号称一键登录,但实际上许多第三方网站/应用在用户受权登陆后,依旧有二次登陆或从新注册等操做。

虽然目前这些隐患只是表现为偶尔的偷偷关注或偷偷以用户帐号发一些广告,并无爆发出严重的事件。可是想一想那么多隐私信息和部分权限控制在那么多的第三方应用或平台上就有点毛骨悚然的感受。

服务的整合原本是大势所趋,也是将来方向,可是国内这些将认证和受权混为一谈的作法使得咱们不只没有更使得咱们能够更方便更安全更省事的去管理,去得到服务,反而使咱们的帐户更加混乱,更埋下了信息安全的隐患。对此咱们必定要提升警戒。

 

后记:在国外 OAuth 也没有太多安全可言,最近两天一个名为reference.me的社交服务就在滥用OAuth 协议,用户只要用 Google 帐户受权登陆就会自动向全部联系人发送邀请邮件,你们要注意。