OAuth 的權(quán)限問題與信息隱憂

2 評(píng)論 3102 瀏覽 9 收藏 13 分鐘

[核心提示] 以 QQ 登陸和微博登陸為代表的“一鍵登陸”背后不僅僅是登陸這么簡單,它還默認(rèn)獲取了你的其他隱私資料和賬號(hào)的部分使用權(quán)限,我們?cè)谙硎鼙憷耐瑫r(shí)一定不要忘記保護(hù)好我們的個(gè)人信息安全。

去年3Q大戰(zhàn)之后,開放幾乎成為了最熱的詞匯,隨后的國內(nèi)互聯(lián)網(wǎng)看似進(jìn)入了開放平臺(tái)的“蜜年”,各種基于開放平臺(tái)的應(yīng)用和社會(huì)化登錄也隨之出現(xiàn)。

將自身的產(chǎn)品和服務(wù)與大網(wǎng)站平臺(tái)對(duì)接,不僅能省去注冊(cè)等繁瑣工作,不用為儲(chǔ)存和傳輸大量的用戶賬號(hào)信息而煩惱,還可以迅速的帶來流量、用戶資源,并 得到更好的推廣。而對(duì)于平臺(tái)來說通過 API 支持協(xié)議可以得到很多的應(yīng)用接入,可以為用戶提供更多更好的服務(wù)。這對(duì)開發(fā)者和平臺(tái)提供商來說是雙贏的局面。因此,QQ 登錄、各種微博登錄和 SNS 登陸也似乎成為了第三方網(wǎng)站或應(yīng)用的必備按鈕。

本來利用已有的賬號(hào)登陸這些第三方網(wǎng)站和應(yīng)用是一件好的事情,因?yàn)閺捏w驗(yàn)上來說可以方便用戶,但是國內(nèi)這些“一鍵登陸”真的是用戶想的那樣“一鍵登陸”嗎?我們看到一個(gè)網(wǎng)站就用我們的賬號(hào)登陸難道沒有隱患嗎? 這些”登陸“的背后的關(guān)鍵是什么?

如果你有夠細(xì)心的話會(huì)發(fā)現(xiàn)所有登陸基本都是彈出一個(gè)對(duì)應(yīng)對(duì)話框,其地址欄中也都會(huì)包含有“OAuth”字樣。這說明,其當(dāng)前采用的是 OAuth 協(xié)議。在目前,無論是國外還是國內(nèi),絕大部分都是采用 OAuth 協(xié)議來完成在第三方網(wǎng)站或應(yīng)用的登陸的。

OAuth 是什么?它有什么優(yōu)點(diǎn)呢?為什么都采用 OAuth?

OAuth(開放授權(quán))是一個(gè)開放標(biāo)準(zhǔn) ,允許用戶讓第三方應(yīng)用訪問該用戶在某一網(wǎng)站上存儲(chǔ)的私密的資源(如照片,視頻,聯(lián)系人列表),而無需將用戶名和密碼提供給第三方應(yīng)用?!倏?/p>

OAuth 的權(quán)限問題與信息隱憂

OAuth 的優(yōu)點(diǎn)

OAuth 不會(huì)使第三方網(wǎng)站或應(yīng)用接觸到用戶的帳號(hào)信息(如用戶名與密碼),授權(quán)后的 http 通信中也不再傳輸用戶信息而是以數(shù)字簽名和訪問令牌(Access Token)取代,即使截到數(shù)據(jù)包,也無法還原出用戶的登錄信息。這是OAuth 最大的優(yōu)點(diǎn),也是它得以逐漸成為現(xiàn)在通用的授權(quán)標(biāo)準(zhǔn)的原因。

OAuth 被普及的原因

對(duì)用戶來說方便、安全;對(duì)中小第三方網(wǎng)站和應(yīng)用來說,OAuth 可以使它們能夠得到用戶基本信息外的其他信息資料和賬戶部分使用權(quán)限;對(duì)大網(wǎng)站平臺(tái)來說,OAuth 可以完美的解決用戶的賬戶安全和開發(fā)者授權(quán)的平衡問題。因此 OAuth 協(xié)議確定后就獲得了包括國外 Twitter、Facebook 和 Google 等認(rèn)可,之后在國內(nèi)也得到了有效跟進(jìn)。

OAuth 授權(quán)的信息隱患

凡是只有其利就有其弊,OAuth 也不例外。為什么在安全上看似完美無缺的 OAuth 都有信息隱患呢?

1. 被濫用了的 OAuth 授權(quán)

OAuth 是一個(gè)授權(quán)(authorization)協(xié)議而不是認(rèn)證(authentication)協(xié)議,因此,對(duì)于 OAuth 來說最大的信息隱患就是其本身。

OAuth 提供的是權(quán)限分配而非認(rèn)證。在國內(nèi)大多數(shù)網(wǎng)站的一鍵登陸根本沒有去區(qū)分認(rèn)證和授權(quán) ,全部混淆為授權(quán)。本身用類似 OpenID 的簡單認(rèn)證即可完成的事情卻非要走授權(quán)。而一鍵登陸在給用戶帶來便利的同時(shí)也帶來了另一個(gè)弊端:用戶變得越來越不在意自己的賬號(hào)。因?yàn)?OAuth 協(xié)議本身的安全給了我們一種假象:別人獲取不到我的賬號(hào)密碼,所以我的賬戶很安全。我們要明白,授權(quán)本身的實(shí)質(zhì)相當(dāng)于系統(tǒng)為第三方網(wǎng)站/應(yīng)用開了一個(gè)后 門,而你的授權(quán)就是允許它們可以走后門進(jìn)來獲取你的隱私資料和使用權(quán)限。

打個(gè)比方就是,雖然它們不知道你家的鎖長什么樣,也沒有你家的鑰匙,但是人家就是能進(jìn)得去你家,還可以看你家的電話簿,用你家的電話給你的親朋好友 打電話等。很多其實(shí)扮演的只是抄水表的角色,在門外瞅一眼即可,但是偏偏國內(nèi)那些平臺(tái)們把水表安到了你家里面,這樣很多抄水表的就可以打著抄水表的借口從 后門去你家向你的親朋好友宣傳它水表抄的好,想繼續(xù)去你親朋好友家抄水表。

譬如一些小游戲和星座信息之類的第三方網(wǎng)站和應(yīng)用,無一例外都會(huì)要求我們授權(quán)給它們我們的好友關(guān)系、生日、相冊(cè)、評(píng)論、甚至地理信息位置。對(duì)于我們 來說,個(gè)人信息的安全不僅僅是我們的用戶名和密碼,那些“被授權(quán)”的都是信息安全的一部分,甚至是最重要的部分。前幾天通過 QQ 圈子我們也了解到了這些信息有多重要。

你授權(quán)的網(wǎng)站/應(yīng)用越多,意味著越多的網(wǎng)站和應(yīng)用能夠接觸到你的賬戶資料并擁有部分使用權(quán)限,也意味著隱患越多。雖然它們并沒有獲取到的你的賬戶密 碼,雖然你之后從未登陸過或使用過它們,但是,除非你去隱藏很深的后臺(tái)設(shè)置里面取消它們的權(quán)限,否則它們是一直能夠接觸到你的賬戶資料并擁有你賬戶的部分 使用權(quán)限的。

某種程度上說,OAuth 對(duì)我們個(gè)人信息安全來說是一扇隱形的窗戶,而且這個(gè)窗戶還是默認(rèn)永久開放的。

2. OAuth 使用的不規(guī)范

在很多時(shí)候,出問題的環(huán)節(jié)往往不是技術(shù),而是背后使用技術(shù)的人。

1. 平臺(tái) OAuth 部署不規(guī)范

OAuth 部署是否規(guī)范,例如有無強(qiáng)制使用 https 加密,有無強(qiáng)制部署 OAuth 2.0。對(duì)移動(dòng)應(yīng)用的授權(quán)有無注意應(yīng)用會(huì)自建瀏覽器,有無注意在信息回傳過程中的信息防護(hù),這些都是需要考據(jù)的問題。OAuth 協(xié)議本身沒有問題,但是對(duì)協(xié)議的用途是否規(guī)范值得商榷。

事實(shí)上,各開放平臺(tái)之間的技術(shù)差異很大,因此每個(gè)平臺(tái)使用并不是相同版本的協(xié)議,有 OAuth 1.0、OAuth 2.0 或混合的技術(shù)體系(甚至還有繼續(xù)使用不安全的 Basic Auth)。此外,如果你去翻看一下國內(nèi)各個(gè)開放平臺(tái)的開發(fā)文檔就會(huì)發(fā)現(xiàn),雖然 OAuth 整體流程大致類似,但是對(duì)于授權(quán)的定義各家有各家的標(biāo)準(zhǔn),對(duì)待開發(fā)者的態(tài)度各不相同,對(duì)授權(quán)的限制也是各家有各家的標(biāo)準(zhǔn) ,對(duì)用戶的賬號(hào)保護(hù)也是各有各的說法。

例如某家開發(fā)平臺(tái)上對(duì)待涉及自身利益的時(shí)候用“嚴(yán)禁”“禁止”字眼,而涉及用戶賬號(hào)利益的時(shí)候就變成了“不應(yīng)”、“不鼓勵(lì)” 等字樣。再例如,對(duì)未審核應(yīng)用、待審核應(yīng)用和未通過審核應(yīng)用的限制,國內(nèi)只有兩家平臺(tái)對(duì)使用人數(shù)進(jìn)行限制外,其他各家都只是稍微限制了一下調(diào)用頻率次數(shù)和 不顯示來源而已。

綜合來看,國內(nèi)的關(guān)于OAuth協(xié)議標(biāo)準(zhǔn)的實(shí)施部署是一個(gè)開發(fā)者和平臺(tái)綜合博弈的結(jié)果。

2. 應(yīng)用開發(fā)者不自律

OAuth 的安全性相當(dāng)一部分需要依靠應(yīng)用開發(fā)者的高度自律,不該有的權(quán)限不去申請(qǐng),但是事實(shí)并非如此。正常情況下,平時(shí)我們所用的 90% 的應(yīng)用只需用只讀權(quán)限即可,但是相反的是,只有 5% 的應(yīng)用只擁有只讀權(quán)限。對(duì)于開發(fā)者開說,盡量獲取到用戶賬戶的使用權(quán)限似乎是一種”追求“,而不管用不用得到。這不僅讓人想起了 Android 移動(dòng)應(yīng)用上的普遍高權(quán)限。

3. 平臺(tái)審核是否仔細(xì)

第三方網(wǎng)站或應(yīng)用要接入平臺(tái)需要通過平臺(tái)的審核,審核是一層對(duì)開發(fā)者的把關(guān)。因?yàn)槠脚_(tái)競爭的原因,各家審核標(biāo)準(zhǔn)并不一致,實(shí)際操作更是誰也不清楚??傮w來看,強(qiáng)勢的平臺(tái)限制嚴(yán)格,弱勢的平臺(tái)因?yàn)橐_發(fā)者所以很多事情睜一只眼閉一只眼。

4. 用戶對(duì) OAuth 的不設(shè)防

OAuth 協(xié)議的實(shí)施很類似微軟平臺(tái)下軟件的安裝,用戶經(jīng)常在一步步的點(diǎn)擊中默認(rèn)”被授權(quán)“,因?yàn)閲鴥?nèi)大多數(shù)用戶暫時(shí)還沒有注意防護(hù)自己賬戶信息和權(quán)限的習(xí)慣。

我們?cè)撟⒁庑┦裁??該怎么做?/h2>

1. 防止 OAuth 釣魚登陸界面

注意觀察彈出窗口是否為官方登陸域名,要謹(jǐn)防假冒釣魚。

2. 授權(quán)之前的三思

在你將自己的賬號(hào)權(quán)限授權(quán)給一個(gè)應(yīng)用之前,先查清楚應(yīng)用開發(fā)者的具體信息和他們的隱私保護(hù)條款,知道自己到底授權(quán)給了誰,到底給誰授予了哪些權(quán)限。

3. 定時(shí)清理你的第三方應(yīng)用授權(quán)

要注意清理你的第三方應(yīng)用授權(quán),將那些無關(guān)緊要的或已經(jīng)不再使用的第三方網(wǎng)站或應(yīng)用取消授權(quán),關(guān)上那扇隱形的窗戶。

4.授權(quán)后注意其來源

授權(quán)第三方網(wǎng)站或應(yīng)用后要注意查看其有沒有通過官方平臺(tái)的審核,如果來源顯示來自”未審核應(yīng)用“或類似字樣后盡量先取消其授權(quán),待審核通過后再進(jìn)行授權(quán)。

未來,國內(nèi)應(yīng)該分區(qū)開認(rèn)證和授權(quán),給用戶減少不必要的隱患,期待國內(nèi)出現(xiàn)一個(gè)統(tǒng)一的OpenID(不像國外 OpenID 那樣繁瑣,或許類似 BrowserID 的東西),而不像現(xiàn)在,雖然號(hào)稱一鍵登陸,但實(shí)際上許多第三方網(wǎng)站/應(yīng)用在用戶授權(quán)登錄后,依舊有二次登錄或重新注冊(cè)等操作。

雖然目前這些隱患只是表現(xiàn)為偶爾的偷偷關(guān)注或偷偷以用戶賬號(hào)發(fā)一些廣告,并沒有爆發(fā)出嚴(yán)重的事件。但是想想那么多隱私信息和部分權(quán)限控制在那么多的第三方應(yīng)用或平臺(tái)上就有點(diǎn)不寒而栗的感覺。

服務(wù)的整合本來是大勢所趨,也是未來方向,但是國內(nèi)這些將認(rèn)證和授權(quán)混為一談的做法使得我們不僅沒有更使得我們可以更方便更安全更省事的去管理,去獲得服務(wù),反而使我們的賬戶更加混亂,更埋下了信息安全的隱患。對(duì)此我們一定要提高警惕。

后記:在國外 OAuth 也沒有太多安全可言,最近兩天一個(gè)名為reference.me的社交服務(wù)就在濫用OAuth 協(xié)議,用戶只要用 Google 賬戶授權(quán)登錄就會(huì)自動(dòng)向所有聯(lián)系人發(fā)送邀請(qǐng)郵件,大家要注意。

原文地址:http://www.geekpark.net/read/view/156033

更多精彩內(nèi)容,請(qǐng)關(guān)注人人都是產(chǎn)品經(jīng)理微信公眾號(hào)或下載App
評(píng)論
評(píng)論請(qǐng)登錄
  1. 專業(yè),先mark,有時(shí)間再慢慢看

    來自云南 回復(fù)
  2. good thing

    來自上海 回復(fù)