`
yangshen998
  • 浏览: 1249186 次
文章分类
社区版块
存档分类
最新评论

微博网站用OAuth就一定安全吗?

 
阅读更多

现在微博网站很火,新浪微博、搜狐微博、腾讯微博、网易微博……无论是在电视上、还是公交车上、地铁上,真的是铺天盖地了,也因此这些公司的市值不断提升。为了吸引更多的应用,这些网站也纷纷开放API,以开放平台的方式供第三方应用开发或进驻微博广场。今天我们就来说一下这些开放API的授权问题。

作为开发人员,我们都知道开放API必然会有鉴权部分,要充分考虑到用户数据的安全性,因此,这些网站都有授权机制,常用的有如下两种。

一种是Basic Authentication,也称为普通鉴权或基本鉴权,是一种通过在HTTP头信息中加入用户名密码进行传输以确认用户身份的协议。当我们在开发应用时,会有一个界面用来要求用户输入用户名和密码,然后按RFC2617标准将用户名和密码用冒号连接起来并做Base64编码,每次进行HTTP请求时在header数据中加入:

Authorization: Basic 编码后的用户信息

即可。

这种方式简单易行,开发方便,但不足之处是安全性差。一是开发人员可以轻而易举的记录用户的用户名和密码信息,二是通过HTTP包可以很容易的进行Base64解码并形成用户信息的明文,因此,目前很多网站都不再提供对此种授权方式的支持。

另一种是OAuth,这是目前应用最多的一种鉴权方式,其目的就是针对普通鉴权的安全性提出的,一是不想在我们开发的应用程序中提供用户输入用户名密码的界面,从而防止开发人员对用户登录信息的记录,二是在通过授权后的HTTP通信中不再传输用户信息而是以数字签名和AccessToken取代,即使截到HTTP包,也无法还原出用户的登录信息。

只不过鱼与熊掌不可兼得,这种方式的初次用户授权过程很漫长,要想获取到AccessToken,需要经过好几个步骤,可以参考新浪给出的这张图。

或者参考OAuth协议简介的博文。

OAuth是目前用得最多的协议,但某些使用该协议的网站却没有重视该协议在实现中的细节,实现得不是很理想,导致安全信息的泄露。拿新浪微博的开放平台为例,假设我们已经在新浪微博开放平台上创建了应用,得到了新浪分配的AppKeyAppSecret,然后在Android手机上开发客户端程序,按照上述流程开发OAuth鉴权部分。

首先访问request_token获取RequestKeyRequestSecret,这步没有问题。

接下来,访问authorize获取用户授权确认,注意,这里显示出来的供用户确认的网页本意是不想在我们的应用程序中出现,直接利用外部浏览器进行,这样在整个用户输入登录信息的过程中对开发人员是不可见的。问题就出在这里。如果在我们自己的Android应用程序中内嵌浏览器WebView的话,尽管用户在授权页面上输入的用户名和密码不好获取,但是当用户点击授权按钮后的HTTP请求还是会传入到WebView对象的onPageStarted()中,受我们的应用程序控制。也就是说,用户填好登录信息并提交时,我们可以在onPageStarted()中得到如下的URL

http://api.t.sina.com.cn/oauth/authorize?action=submit&oauth_token=xxx &display=null&oauth_callback=http%3A%2F%2Fxxx&from=&userId=xxx%40sina.com&passwd=123456

从这里我们看到了什么?没错,看到了用户登录的ID和密码,而且是明文的。

写到这里,我想可以结束本文了,总体上来说,对比这两种授权方式,显然还是OAuth更安全,但是希望网站方在提供用户授权的页面时,还是要仔细处理这些问题。要知道现在客户端开发是可以很容易的在自己的界面中内嵌浏览器并可以监控到用户在浏览器中的操作的。如果这样的程序分发出去,真的想获取用户的登录名和密码的话,对用户的信息安全还是很危险的。

用一句经典的话结尾吧:安全永远是相对的。

——欢迎转载,请注明出处 http://blog.csdn.net/caowenbin——

分享到:
评论

相关推荐

    django接入新浪微博OAuth的方法

    本文实例讲述了django接入新浪微博OAuth的方法。分享给大家供大家参考。具体分析如下: 最近将网站和新浪微博进行了整合,思路很简单,就是将页面内容和新浪微博联系起来,一个独立内容的页面对于一条微博,自然评论...

    新浪微博开放平台Demo源码

    首先要使用这些接口是需要用户登录并且授权的,新浪微博开放平台其实是提供两种授权方式的,第一种是:OAuth授权方式,第二种是:HTTP普通鉴权方式,我们使用了第一种方式来授权,但是在执行过程中遇到了许多问题,...

    Android应用源码YiBo聚合微博客户端

    本项目是一款专为Android用户打造的聚合型微博...使用OAuth认证方式,保护帐号和通信安全 不过比较遗憾的是项目团队已经解散,不再进行任何官方的版本更新和Bug修复。官网网址yibo.me项目编码UTF-8默认编译版本2.3.3

    YiBo聚合微博源码.zip

    YiBo聚合微博源码是一款专为Android用户打造的聚合型微博客户端,下面是官方对本项目功能...使用OAuth认证方式,保护帐号和通信安全 不过比较遗憾的是项目团队已经解散,不再进行任何官方的版本更新和Bug修复。   

    EasyTalk开源微博系统 X2.5.zip

    EasyTalk是国内首款多用户PHP Mysql...基于Oauth2.0的API接口 稳定安全、内容更易掌控 内置完整的API接口,让开发者可以进行无限的功能扩展。 设置敏感词过滤,加强微博内容管理,同时可以对数据库进行备份优化等。

    MaoBo微博安卓客户端开源(原名YiBo).zip

    YiBo微博是一款专为Android用户打造的聚合型微博客户端,完美支持新浪、腾讯、搜狐、网易以及Twitter五大微博平台,界面清爽,使用简单,支持多账户跨平台同步发布与分享,为您带来不一样的使用体验。软件功能1. ...

    记事狗微博系统 4.7.4 Build 20140922 UTF8.zip

    记事狗微博系统是一套创新的互动社区系统,其以微博为核心,兼有轻博、SNS和BBS特点,既可用来独立建站也可通过Ucenter和oauth接口与已有网站无缝整合,通过微博评论模块、关注转发机制打通全站的信息流、关系流,可...

    OAuth2通用组件升级源码20121211

    OAuth2通用组件升级源码 功能介绍: OAuth2.0同时提供Web,桌面和移动应用程序的支持,并较1.0相比整个 授权验证流程更简单更安全。也是新浪微博开放平台未来最主要的用户身份验证和授权方式。 升级内容: 1:引入...

    Android应用源码YiBo聚合微博客户端.zip

    本项目是一款专为Android用户打造的聚合型微博...使用OAuth认证方式,保护帐号和通信安全 不过比较遗憾的是项目团队已经解散,不再进行任何官方的版本更新和Bug修复。官网网址yibo.me项目编码UTF-8默认编译版本2.3.3

    记事狗微博系统 4.7.4 Build 20140922 GBK.zip

    记事狗微博系统是一套创新的互动社区系统,其以微博为核心,兼有轻博、SNS和BBS特点,既可用来独立建站也可通过Ucenter和oauth接口与已有网站无缝整合,通过微博评论模块、关注转发机制打通全站的信息流、关系流,可...

    信息安全_对方不想说话并扔了个message.pptx

    QQ上你点啊点/H5拿你的授权/微博oauth有点弱/提权进了你微博 微博开放平台的JSSDK使用的一个接口 点我的链接我就进你的微博 手机qq上你点我的链接我就可能获得你的地理位置 postMessage的安全注意事项 一些思考 开放...

    微博:请原谅潜在的安全漏洞。 不推荐使用该gem,而推荐使用较新的api的gem

    该微博版本1的API将很快被弃用, 实施用的oauth2。 微博 该gem的目标之一是在尽可能的范围内具有与twitter gem相同的语法,以便易于学习和使用。 下载宝石,然后尝试一下。 另外,我使用sinatra编写了一个小型演示...

    Xweibo 2.2 build 20120911.zip

    拥有新浪微博的核心功能,具备微博发布、浏览、转发、评论、私信、收藏、话题、黑名单等核心功能以外,还满足更多运营需求:数据本地备份、设置网站粉丝/关注关系从零开始或继续用新浪微博的关注关系、多个互动模块...

    YiBo聚合微博

    YiBo聚合微博源码是一款专为Android用户打造的聚合型微博客户端,下面是官方对本项目功能的一些介绍:一键同步...使用OAuth认证方式,保护帐号和通信安全不过比较遗憾的是项目团队已经解散,不再进行任何官方的版本更

    mastodon:您的自托管,全球互连的微博社区

    Mastodon是基于ActivityPub的免费开放源代码社交网络服务器,用户可以在其中跟随朋友并发现新朋友。 在Mastodon上,用户可以发布... OAuth2和直接的REST API Mastodon充当OAuth2提供者,因此第三方应用程序可以使用R

    mastodon:您的自托管,全球互连的微博社区,zunda的叉子

    Mastodon是基于ActivityPub的免费开放源代码社交网络服务器,用户可以在其中跟随朋友并发现新朋友。 在Mastodon上,用户可以发布... OAuth2和直接的REST API Mastodon充当OAuth2提供者,因此第三方应用程序可以使用R

    关于微信小程序API认证

    API认证方式有Basic Auth和OAuth ...2.OAuth为用户资源的授权提供了一个安全,开放的标准,微信平台,微博,豆瓣等都提供对它的支持;安全性高,用户的username和password只需提供一次,Access Token访问权限仅限于应用

Global site tag (gtag.js) - Google Analytics