• 第三方登录——OAuth协议


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

    定义:

    • OAuth: OAuth(开放授权)是一个开放标准,允许用户授权第三方网站访问他们存储在另外的服务提供者上的信息,而不需要将用户名和密码提供给第三方网站或分享他们数据的所有内容。
    • QQ登录OAuth2.0:对于用户相关的OpenAPI(例如获取用户信息,动态同步,照片,日志,分享等),为了保护用户数据的安全和隐私,第三方网站访问用户数据前都需要显式的向用户征求授权。

    普及原因:

    • 用户角度:方便、快捷、安全,很多资料信息可以公用;
    • 中小第三方网站和应用角度:OAuth 可以使它们能够得到用户基本信息外的其他信息资料和账户部分使用权限;
    • 大网站平台角度:OAuth 可以完美的解决用户的账户安全和开发者授权的平衡问题。

      因此 OAuth 协议确定后就获得了包括国外 Twitter、Facebook 和 Google 等认可,之后在国内也得到了有效跟进。

    优点:

      OAuth 不会使第三方网站或应用接触到用户的帐号信息(如用户名与密码),授权后的 http 通信中也不再传输用户信息而是以数字签名和访问令牌(Access Token)取代,即使截到数据包,也无法还原出用户的登录信息。这是OAuth 最大的优点,也是它得以逐渐成为现在通用的授权标准的原因。

    缺点:

    1. 被滥用了的 OAuth 授权

    • OAuth 是一个授权(authorization)协议而不是认证(authentication)协议,授权本身的实质相当于系统为第三方网站/应用开了一个后门,而你的授权就是允许它们可以走后门进来获取你的隐私资料和使用权限。
    • 在国内大多数网站的一键登陆根本没有去区分认证和授权 ,全部混淆为授权。本身用类似 OpenID 的简单认证即可完成的事情却非要走授权。
    • 你授权的网站/应用越多,意味着越多的网站和应用能够接触到你的账户资料并拥有部分使用权限,也意味着隐患越多。虽然它们并没有获取到的你的账户密码,虽然你之后从未登陆过或使用过它们,但是,除非你去隐藏很深的后台设置里面取消它们的权限,否则它们是一直能够接触到你的账户资料并拥有你账户的部分使用权限的。
    • 某种程度上说,OAuth 对我们个人信息安全来说是一扇隐形的窗户,而且这个窗户还是默认永久开放的。

    2. OAuth 使用的不规范

    (1)平台 OAuth 部署不规范

    • 各开放平台之间的技术差异很大,因此每个平台使用并不是相同版本的协议,有 OAuth 1.0、OAuth 2.0 或混合的技术体系(甚至还有继续使用不安全的 Basic Auth)。
    • 如果你去翻看一下国内各个开放平台的开发文档就会发现,虽然 OAuth 整体流程大致类似,但是对于授权的定义各家有各家的标准,对待开发者的态度各不相同,对授权的限制也是各家有各家的标准 ,对用户的账号保护也是各有各的说法。

    (2)平台审核是否仔细

       第三方网站或应用要接入平台需要通过平台的审核,审核是一层对开发者的把关。因为平台竞争的原因,各家审核标准并不一致,实际操作更是谁也不清楚。总体来看,强势的平台限制严格,弱势的平台因为要吸引开发者所以很多事情睁一只眼闭一只眼。

    (3)应用开发者不自律

    • OAuth 的安全性相当一部分需要依靠应用开发者的高度自律,不该有的权限不去申请,但是事实并非如此。
    • 正常情况下,平时我们所用的 90% 的应用只需用只读权限即可,但是相反的是,只有 5% 的应用只拥有只读权限。对于开发者开说,尽量获取到用户账户的使用权限似乎是一种”追求“,而不管用不用得到。

    (4)用户对 OAuth 的不设防

       OAuth 协议的实施很类似微软平台下软件的安装,用户经常在一步步的点击中默认”被授权“,因为国内大多数用户暂时还没有注意防护自己账户信息和权限的习惯。

    3. 注意点:

    (1)防止 OAuth 钓鱼登陆界面

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

    (2)授权之前的三思

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

    (3)定时清理你的第三方应用授权

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

    (4)授权后注意其来源

      授权第三方网站或应用后要注意查看其有没有通过官方平台的审核,如果来源显示来自”未审核应用“或类似字样后尽量先取消其授权,待审核通过后再进行授权。

     参考:

    http://www.geekpark.net/topics/173252

    http://www.geekpark.net/topics/156033

  • 相关阅读:
    【转】UTF8文件的Unicode签名BOM(Byte Order Mark)问题
    【转】java使用正则表达式去除字符串的html标签
    用UltraEdit转换大小写
    【转】浅谈字节序(Endianness)
    【转】用UltraEdit的正则表达式替换功能来格式化网页源代码
    【转】关于正则表达式匹配任意字符(包括换行符)的写法
    【转】C# 中的 #region 和 #endregion
    网易游戏开发工程师笔试题
    c++笔试题汇总
    恒生电子面试过程纪录
  • 原文地址:https://www.cnblogs.com/sheropan/p/5067271.html
Copyright © 2020-2023  润新知