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 帳戶受權登陸就會自動向全部聯繫人發送邀請郵件,你們要注意。
相關文章
相關標籤/搜索