支持新浪微博登錄的網站會不會泄漏用戶密碼?

用新浪微博登錄,這是怎樣的機制呢?幫忙詳解一下,謝謝。


感謝邀請。必須聲明,我在這方面是徹頭徹尾的初學者,以下發言謹供參考。

支持新浪微博登錄的網站們所使用的 OAuth 這項技術曾經有過安全問題:

2009 年 4 月 23 日,OAuth 宣告了一個 1.0 協議的安全漏洞。該漏洞影響了 OAuth 1.0 核心規範第 6 節的 OAuth 的認證流程(也稱作 3 階段 OAuth)。於是,發布了 OAuth Core 協議 1.0a 版本來解決這一問題。[0]

不過,目前新浪微博開放平台(以及絕大部分主流開放平台)使用的是 OAuth 1.0a 版本[1],而不是之前曝出漏洞的 1.0 版本。可以說,安全性大為提高。但是,某些桌面客戶端和移動客戶端會使用 xAuth,即一種簡化版的 OAuth 認證。因為xAuth依然會獲得用戶明文密碼[2],這部分的安全性我還不了解。

使用 OAuth 進行認證和授權的過程如下所示:

用戶訪問客戶端的網站,想操作用戶存放在服務提供方的資源。

客戶端服務提供方請求一個臨時令牌。

服務提供方驗證客戶端的身份後,授予一個臨時令牌。

客戶端獲得臨時令牌後,將用戶引導至服務提供方的授權頁面請求用戶授權。在這個過程中將臨時令牌和客戶端的回調連接發送給服務提供方

用戶服務提供方的網頁上輸入用戶名和密碼,然後授權該客戶端訪問所請求的源。

授權成功後,服務提供方引導用戶返回客戶端的網頁。

客戶端根據臨時令牌從服務提供方那裡獲取訪問令牌。

服務提供方根據臨時令牌和用戶的授權情況授予客戶端訪問令牌。

客戶端使用獲取的訪問令牌訪問存放在服務提供方上的受保護的資源。[3]

欲知詳情,可以看看如下幾篇文章:

OAuth 認證步驟 http://isouth.org/archives/286.html

Twitter、新浪微博、豆瓣我說的 OAuth 認證示例 http://isouth.org/archives/293.html

OAuth 認證協議原理分析及使用方法 http://kejibo.com/oauth/

[0]漏洞詳情:http://article.yeeyan.org/view/sakinijino/38693

[1]http://open.weibo.com/wiki/index.php/Oauth#.E6.A6.82.E8.BF.B0

[2]http://open.weibo.com/wiki/XAuth#xAuth.E7.94.B3.E8.AF.B7.E9.9C.80.E6.B1.82

[3]http://zh.wikipedia.org/wiki/OAuth#.E5.AE.89.E5.85.A8


手機端內嵌網頁認證的應用,oauth還是xauth,都是可以抓取用戶名密碼的。

外部調用瀏覽器的應用是安全的,但目前還不成熟,非通用的瀏覽器會造成回調的失敗,比如uc等。(實際上是成熟的,但回調的機制常常被用戶安裝的某些插件攔截)

所以,通常來說,使用手機端的應用,都是可以抓取到用戶的用戶名和密碼。


要看輸入密碼的頁面是在哪裡

普通的oauth流程,輸入密碼的頁面是provider域的,也就是新浪的頁面

xoauth或者oauth2的password credit流程,是在consumer,也就是開發者的頁面上輸入密碼的

一般xoauth這樣的介面,不應該隨意對外開放。


推薦閱讀:

怎樣評價新浪NBA的解說?
如何看待新浪娛樂關於王源的採訪《王源:希望成為自己喜歡的自己》?
如何編寫 Python 程序爬取新浪軍事論壇?
新浪「信用寶」與別的支付產品有哪些不同?
蘭州拉麵,裡面放了蓬灰?

TAG:新浪 | 網站 | 用戶 | OAuth | 密碼 | 認證 |