掃碼登錄的安全性分析
時至今日,各大互聯網公司都已提供並鼓勵使用掃碼登錄功能。掃碼登錄通過二維碼在設備之間傳遞信息,使得用戶可以使用安全可信任的設備(比如自己的手機)來控制不可信任的設備上的登錄行為。其省去了在不便手動輸入的設備(比如電視)上輸入的環節,所以更方便;避免了在安全等級低的設備和環境(比如公共電腦、Web頁面)中輸入密碼,因此更安全。
本文分析二維碼掃碼登錄功能通常的實現方式,並重點總結實現過程中需要注意的安全點。
掃碼登錄流程有以下幾個步驟:
非授信設備訪問服務端生成token,並將token通過二維碼展示在界面上;
授信設備掃描展示在非授信設備上的二維碼,獲取到token;
授信設備使用token訪問服務端獲取非授信設備的設備信息,並將非授信設備的設備信息展示在界面上,請用戶確認;
用戶確認在授信設備上確認後,授信設備訪問服務端,告知服務端該token已被用戶確認可用來登錄;
非授信設備使用token登錄。非授信設備並不知道用戶何時會確認,所以需要輪詢服務端,一直使用token嘗試登錄,直到成功;
需要注意的安全點有:
所有介面訪問,要使用https;
token要有一個較短的有效期比如5分鐘,且一次有效,用過即失效;
流程中第4步:展示被掃碼端設備信息並請用戶確認,必須有,不能省略;
總結以上兩點,token有四個狀態:NEW(新生成)、SCANNED(已掃描待確認)、CONFIRMED(已確認)、USED(已使用);
相應的,流程中第5步,使用token嘗試登錄可能有5種返回:token不合法、待掃描、已掃描待確認、登錄成功並返回用戶登錄憑證、token已被使用過,失敗的情況可以展示相應的信息以提升用戶體驗;
token只允許在生成該token的設備上進行登錄,這需要有支持防偽造的唯一標識設備的能力,比如設備指紋;
掃碼端必須是授信設備;
Web端不能成為掃碼端;
必要時,第3步和第4步,可以使用非HTTP協議;
本文不討論服務端安全,比如token怎樣存儲等;
就想到這麼多:)
點擊展開全文
※Java程序員面試的5 點小技巧
※Junit4使用學習-初步教程
※Java常犯5個錯!
TAG:java學習吧 |
※小程序擴展功能:掃碼登錄
※六個安全保護賬戶登錄的技巧
※通過手機密鑰的動態密碼加強SSH登錄安全性
※谷歌產品總監笑誇蘋果「一鍵登錄」功能:比輸密碼安全N倍
※Web新標準:指紋和面容識別可取代登錄密碼
※一鍵登錄,指紋滑鼠開賣告別繁瑣的密碼登錄!
※登錄保護LP
※單點登錄與許可權管理本質:單點登錄介紹
※華媒:網路安全問題不容忽視 要勤換登錄密碼!
※5秒登錄:北京首都機場推全覆蓋WiFi 更重要的是安全和體驗
※加密指紋滑鼠 一鍵登錄告別密碼
※日本政府將登錄公民的物聯網設備,來檢測設備安全性
※為了安全!谷歌賬戶登錄政策大改革
※身份認證系統(二)多WEB應用的單點登錄
※360 快視頻深陷盜用視頻疑雲,B 站綁定的手機號碼和密碼疑似能直接登錄
※iOS新功能曝光 Apple id可直接登錄第三方網站支持二維碼掃碼登錄
※你還在用密碼登錄?這種新技術徹底告別密碼
※《問道》手游全新登錄頁面 開啟全新遊戲之旅
※「老洞」背鍋,數萬台大華DVR設備登錄密碼被搜索引擎收錄
※大牛架構師分享的《分散式單點登錄框架》,能理解輕鬆年入百萬,已開放源代碼