摘要:場景主要的場景有如下幾個掃二維碼登錄版系統(tǒng)比如微信版,在手機(jī)端微信登錄的前提下,掃二維碼確認(rèn),自動登錄網(wǎng)頁版。小結(jié)二維碼掃描登錄是個挺潮流的功能,這要求既有系統(tǒng)增加改造,也要求針對這種形式的登錄帶來潛在的攻擊進(jìn)行安全防范。
序
本文主要來研究一下二維碼登錄的相關(guān)場景和原理。
場景主要的場景有如下幾個:
app掃二維碼登錄pc版系統(tǒng)
比如微信web版,在手機(jī)端微信登錄的前提下,掃二維碼確認(rèn),自動登錄網(wǎng)頁版。這里的app可以分為兩大類,一個是自有的app,一個是第三方的app。
自己的app自有認(rèn)證體系,在登錄前提下完成pc端的掃描登錄。
第三方app掃描登錄場景,比如使用手機(jī)端的微信APP掃描登錄PC端系統(tǒng),這種情況下,一般是利用微信的oauth體系,服務(wù)端完成自有賬戶體系與微信賬號的綁定,然后實(shí)現(xiàn)PC端的自動登錄
app掃二維碼作為雙因素驗(yàn)證
比如微信公眾號平臺,在賬戶密碼登錄PC端的情況下,再使用手機(jī)端微信登錄的前提下,掃描二維碼再次確認(rèn),登錄網(wǎng)頁版
Secure QR Login (SQRL)
完全使用二維碼登錄,替代用戶密碼。這個有SQRL協(xié)議及相關(guān)實(shí)現(xiàn)。
步驟以下所有的都基于這個前提,就是手機(jī)app已經(jīng)登錄,自帶有登錄的憑證,然后要掃描登錄pc端的系統(tǒng)
打開pc端顯示登錄二維碼(pc端未登錄的前提下)
這個時候請求服務(wù)端生成一個登陸二維碼
服務(wù)端生成二維碼,該二維碼包含了這個pc端的唯一標(biāo)識,比如sessionId,或者是新生成一個uuid跟這個sessionId關(guān)聯(lián)
pc端同時開啟輪詢(有長連接等其他實(shí)現(xiàn),這里以輪詢方式介紹)
獲取二維碼之后,pc端開啟定時輪詢,輪詢二維碼的狀態(tài),主要有如下狀態(tài):NEW,SCANED,CONFIRMED,REFUSED,EXPIRED
手機(jī)端掃描二維碼
手機(jī)端已經(jīng)登錄的情況下,掃描網(wǎng)頁二維碼,二維碼狀態(tài)變?yōu)橐褣呙瑁缓笫謾C(jī)端跳轉(zhuǎn)到確認(rèn)頁面
手機(jī)端確認(rèn)
手機(jī)端掃描二維碼之后,點(diǎn)擊確認(rèn),二維碼狀態(tài)變?yōu)榇_認(rèn)
pc端跳轉(zhuǎn)成功/二維碼過期/拒絕
二維碼狀態(tài)變?yōu)榇_認(rèn)之后,跳轉(zhuǎn)自動登錄,完成PC端登錄態(tài)建立PC客戶端
如果app端拒絕這次請求,則二維碼狀態(tài)變?yōu)楸痪芙^,不再輪詢
如果二維碼狀態(tài)在一定時間沒有變化,則顯示二維碼過期,不再輪詢
請求登錄二維碼
輪詢二維碼狀態(tài)
跳到到登陸后的頁面
手機(jī)客戶端掃描登錄二維碼
確認(rèn)登錄
服務(wù)端生成登錄二維碼,綁定二維碼與pc客戶端
處理二維碼輪詢
處理手機(jī)端掃描二維碼
處理手機(jī)端確認(rèn)二維碼登錄
處理pc端自動登錄
實(shí)現(xiàn) PC端如何自動登錄這個問題相當(dāng)于同一個帳號多設(shè)備同時登錄的問題
在二維碼被具有登錄態(tài)的app端掃描確認(rèn)之后,PC端如何完成自動登錄。有如下幾個方案:
session拷貝
其實(shí)就是在原來基于賬號密碼的登錄鑒權(quán)邏輯基礎(chǔ)上,新增支持無需賬號密碼的登錄。也就相當(dāng)于繞過了基于用戶名密碼,內(nèi)部重新設(shè)置了一個登錄態(tài)
如果是基于session的鑒權(quán),相當(dāng)于基于原有的一個已經(jīng)鑒權(quán)的session,拷貝信息到另外一個新的session中,在server端關(guān)聯(lián)
復(fù)用已有token
如果是基于token的鑒權(quán),一種方案就是復(fù)用token,讓pc端也復(fù)用手機(jī)app端的token,這樣的好處是原來基于token的鑒權(quán)邏輯都不用改
仿照oauth授權(quán)頒發(fā)新token
整個過程其實(shí)有點(diǎn)像oauth,pc端是client,server端是資源和認(rèn)證中心,手機(jī)端是具有登錄態(tài)的用戶。手機(jī)端掃描二維碼,然后用戶確認(rèn)授權(quán),server端給pc端頒發(fā)token,然后pc端就可以訪問server端的資源了。這種就在原來的認(rèn)證基礎(chǔ)上支持另外一類oauth的token校驗(yàn),貌似有點(diǎn)復(fù)雜二維碼過期
另外一個變形是新頒發(fā)token,但跟app端的token有個關(guān)聯(lián)映射,最終鑒權(quán)的時候還去找原來授權(quán)的token去鑒權(quán),這樣的好處是原來的token失效,經(jīng)過它授權(quán)的token也失效
一種是基于redis來做過期,一種是使用數(shù)據(jù)庫,但是設(shè)置expired time來判斷
安全問題QRLJacking全稱Quick Response Code Login Jacking,是session劫持的一種。
原理具體是怎么劫持的呢,假設(shè)攻擊者將web登錄二維碼偽裝為公眾號二維碼,讓用戶去掃描,用戶一不小心點(diǎn)擊確認(rèn),攻擊者的就可以登錄用戶的web系統(tǒng),或者利用那個token/session去盜取用戶的相關(guān)信息或做相關(guān)操作。
防范二維碼超時機(jī)制
二維碼增加超時機(jī)制之后,會增加攻擊者攻擊的難度,不過攻擊者也可能利用腳本去自動刷新二維碼
確認(rèn)機(jī)制
二維碼掃描一定要有這個確認(rèn)的頁面,明確告知用戶要做的操作,假設(shè)沒有確認(rèn)這個環(huán)節(jié),那么是極其容易上當(dāng)?shù)摹A硗猓S碼掃描確認(rèn)之后,再往用戶app或手機(jī)等發(fā)送登錄提醒的通知,告知如果不是本人登錄的,則建議用戶立即修改密碼
Sound-based Authentication
確認(rèn)階段改為雙邊語音確認(rèn),而不是簡單的用戶點(diǎn)擊確認(rèn)按鈕。語音是根據(jù)用戶id、二維碼id等加密生成,在app端播放,然后pc端語音識別之后才能完成整個登錄過程。這個可以有效防止遠(yuǎn)程攻擊。同樣的思路,改語音為one time password也行,增加了確認(rèn)過程的復(fù)雜度,也就增加了攻擊的難度。
小結(jié)二維碼掃描登錄是個挺潮流的功能,這要求既有系統(tǒng)增加改造,也要求針對這種形式的登錄帶來潛在的攻擊進(jìn)行安全防范。
docSQRL (Secure Quick Reliable Login)
掃碼登錄的安全性分析
模擬實(shí)現(xiàn)微信掃描二維碼登錄PC網(wǎng)站
Web應(yīng)用多賬號系統(tǒng)設(shè)計及微信掃碼登錄實(shí)現(xiàn)
即時通信系統(tǒng)中如何實(shí)現(xiàn):支持PC端和移動端同時在線(即支持同帳號多設(shè)備同時登錄)?
Quick authentication using mobile devices and QR Codes
OWASP Qrljacking
QRLJacking:如何劫持快速登陸時使用的二維碼
微信Netting-QRLJacking分析利用-掃我二維碼獲取你的賬號權(quán)限
文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請注明本文地址:http://specialneedsforspecialkids.com/yun/11294.html
摘要:前言這個項目是利用工作之余寫的一個模仿微信的單頁面應(yīng)用,整個項目包含個頁面,涉及實(shí)時群聊,機(jī)器人聊天,同學(xué)錄,朋友圈等等,后續(xù)頁面還是開發(fā)中。 前言 這個項目是利用工作之余寫的一個模仿微信app的單頁面應(yīng)用,整個項目包含27個頁面,涉及實(shí)時群聊,機(jī)器人聊天,同學(xué)錄,朋友圈等等,后續(xù)頁面還是開發(fā)中。寫這個項目主要目的是練習(xí)和熟悉vue和vuex的配合使用,利用socket.io實(shí)現(xiàn)實(shí)時聊...
摘要:對中的數(shù)據(jù)綁定場景,小伙伴們就再熟悉不過了。比如包下大名鼎鼎的源碼分析的源碼相對來說還是頗為復(fù)雜的,它提供的能力非常強(qiáng)大,也注定了它的方法非常多屬性也非常多。并且備注入群字樣,會手動邀請入群 每篇一句 唯有熱愛和堅持,才能讓你在程序人生中屹立不倒,切忌跟風(fēng)什么語言或就學(xué)什么去~ 相關(guān)閱讀 【小家Spring】聊聊Spring中的數(shù)據(jù)綁定 --- 屬性訪問器PropertyAccesso...
摘要:序本文主要介紹下的,也就是定位圖案,用于定位一張圖片中二維碼所處的位置。分類分為三類是和的原型,從到共種尺寸。是的改良版本,添加了對齊標(biāo)記,從到共種尺寸。這里默認(rèn)有個的概念,不同的對應(yīng)不同的尺寸大小。最高,,所以最高是的矩陣。 序 本文主要介紹下qrcode的detect position,也就是定位圖案,用于定位一張圖片中二維碼所處的位置。 qrcode分類 QRCode 分為 Mo...
閱讀 3226·2021-10-13 09:40
閱讀 3688·2019-08-30 15:54
閱讀 1309·2019-08-30 13:20
閱讀 2993·2019-08-30 11:26
閱讀 475·2019-08-29 11:33
閱讀 1099·2019-08-26 14:00
閱讀 2356·2019-08-26 13:58
閱讀 3366·2019-08-26 10:39