前言html
第三方帳號登錄也就是當你沒有A網站的註冊帳號時,你可使用該與A網站合做的第三方帳號登錄A,在大多數狀況下你會當即擁有與你第三方帳號綁定的A網站會員,而後執行A網站的會員操做。這種場景常見於登錄團購、酒店住宿等網站,當人們沒有該網站帳號時,很多人會堅決果斷地選擇使用qq等登錄。如下的第三方帳號就以qq爲例吧linux
第三方登錄的過程安全
第三方帳號登錄骨子裏就是單點登陸SSO的概念,如今添加了不少商業因素。當你使用了第三方帳號登錄了,目標站點能夠經過第三方帳號肯定你的身份,你與目標站點的信任關係就創建起來了。SS0的流行讓「一個帳號遊遍互聯網」成爲了可能。網絡
SSO的優勢在於風險集中化,對用戶來講不用記那麼多的帳號密碼了,對一些中小網站來講能夠專心於業務上而減少帳號管理成本。SSO的缺電也很明顯,由於風險集中了,因此若是單點一旦被攻破,影響的業務就會涉及全部使用單點登陸的系統。爲此有些敏感操做如付款等會要求用戶輸入獨立口令或者經過短信驗證用戶身份等。xss
騰訊qq的受權登錄過程大體以下:網站
在這裏很重要的一點是認證的過程是在qq的控制下完成了。受權經過後,用戶還能夠設置容許網絡應用程序訪問本身qq帳號的那些數據以及是否能夠發佈狀態等權限。(用戶只能在qq受權規則範圍內再次選擇受權)htm
OAuth協議爲用戶資源的受權提供了一個安全的、開放而又簡易的標準。如今已經發展到2.0版,具體內容你們可百度之。blog
由此引起的血案接口
風險1:針對目標網絡應用程序而言,從第三方帳號獲取的數據構成了一種輸入,而輸入通常是須要進行過濾的,不然會引起XSS。資源
烏雲上有這麼一個漏洞WooYun: 拉手網任意訂單密碼以及用戶信息存在泄漏風險(xss盲打後臺)。
拉手網獲取qq暱稱後直接輸出到拉手網頁面了,並且騰訊容許qq暱稱帶有特殊字符如等,而後使用qq帳號登錄拉手網,其在拉手網的暱稱就存在一個xss。該漏洞中做者經過評論反饋盲打了後臺併成功登錄。
直到今天拉手網的這個qq暱稱問題仍然存在,只是已經不能盲打後臺了,估計在以後的頁面輸出時作了過濾。相似的使用qq帳戶登陸58團、糯米糰等,你們有興趣還能夠檢測更多的網站。
風險2:受權後的站點在第三方帳號站點發布的數據也構成了一種輸入,這種輸入存在兩個問題:第一個問題本質上仍是上面的過濾問題,見烏雲漏洞WooYun: 博客園的分享接口存在xss漏洞(廣大程序猿們要注意啊)發佈文章到博客園造成xss;第二個問題就是有些無良站點,在用戶受權登錄後往用戶帳號發佈使人反感的信息,一些小白用戶甚至都不明白怎麼回事。
一點想法
任什麼時候候都不要忘記一個原則:來自用戶的輸入都是不安全的,堵住了傳統的發佈渠道時不要忘了所謂的合做帳戶數據也是一種輸入。
儘管有些網站開發者意識到了要過濾第三方帳戶的數據,可是開發人員參差不齊,並且策略也很紊亂。例如:有些地方過濾有些地方不過濾(拉手就是這種狀況,總以爲之後還會出問題),還有的甚至根本就不過濾。建議開發者在用戶一次受權登錄後獲取第三方數據並過濾,以後在用戶這次登錄過程當中就使用這份過濾後版本的數據。