国产xxxx99真实实拍_久久不雅视频_高清韩国a级特黄毛片_嗯老师别我我受不了了小说

資訊專欄INFORMATION COLUMN

聊聊二維碼登錄

Tikitoo / 2090人閱讀

摘要:場景主要的場景有如下幾個掃二維碼登錄版系統比如微信版,在手機端微信登錄的前提下,掃二維碼確認,自動登錄網頁版。小結二維碼掃描登錄是個挺潮流的功能,這要求既有系統增加改造,也要求針對這種形式的登錄帶來潛在的攻擊進行安全防范。

本文主要來研究一下二維碼登錄的相關場景和原理。

場景

主要的場景有如下幾個:

app掃二維碼登錄pc版系統

比如微信web版,在手機端微信登錄的前提下,掃二維碼確認,自動登錄網頁版。這里的app可以分為兩大類,一個是自有的app,一個是第三方的app。

自己的app自有認證體系,在登錄前提下完成pc端的掃描登錄。
第三方app掃描登錄場景,比如使用手機端的微信APP掃描登錄PC端系統,這種情況下,一般是利用微信的oauth體系,服務端完成自有賬戶體系與微信賬號的綁定,然后實現PC端的自動登錄

app掃二維碼作為雙因素驗證

比如微信公眾號平臺,在賬戶密碼登錄PC端的情況下,再使用手機端微信登錄的前提下,掃描二維碼再次確認,登錄網頁版

Secure QR Login (SQRL)

完全使用二維碼登錄,替代用戶密碼。這個有SQRL協議及相關實現。

步驟

以下所有的都基于這個前提,就是手機app已經登錄,自帶有登錄的憑證,然后要掃描登錄pc端的系統

打開pc端顯示登錄二維碼(pc端未登錄的前提下)

這個時候請求服務端生成一個登陸二維碼
服務端生成二維碼,該二維碼包含了這個pc端的唯一標識,比如sessionId,或者是新生成一個uuid跟這個sessionId關聯

pc端同時開啟輪詢(有長連接等其他實現,這里以輪詢方式介紹)

獲取二維碼之后,pc端開啟定時輪詢,輪詢二維碼的狀態,主要有如下狀態:NEW,SCANED,CONFIRMED,REFUSED,EXPIRED

手機端掃描二維碼

手機端已經登錄的情況下,掃描網頁二維碼,二維碼狀態變為已掃描,然后手機端跳轉到確認頁面

手機端確認

手機端掃描二維碼之后,點擊確認,二維碼狀態變為確認

pc端跳轉成功/二維碼過期/拒絕

二維碼狀態變為確認之后,跳轉自動登錄,完成PC端登錄態建立
如果app端拒絕這次請求,則二維碼狀態變為被拒絕,不再輪詢
如果二維碼狀態在一定時間沒有變化,則顯示二維碼過期,不再輪詢
PC客戶端

請求登錄二維碼

輪詢二維碼狀態

跳到到登陸后的頁面

手機客戶端

掃描登錄二維碼

確認登錄

服務端

生成登錄二維碼,綁定二維碼與pc客戶端

處理二維碼輪詢

處理手機端掃描二維碼

處理手機端確認二維碼登錄

處理pc端自動登錄

實現 PC端如何自動登錄
這個問題相當于同一個帳號多設備同時登錄的問題

在二維碼被具有登錄態的app端掃描確認之后,PC端如何完成自動登錄。有如下幾個方案:

session拷貝

其實就是在原來基于賬號密碼的登錄鑒權邏輯基礎上,新增支持無需賬號密碼的登錄。也就相當于繞過了基于用戶名密碼,內部重新設置了一個登錄態
如果是基于session的鑒權,相當于基于原有的一個已經鑒權的session,拷貝信息到另外一個新的session中,在server端關聯

復用已有token

如果是基于token的鑒權,一種方案就是復用token,讓pc端也復用手機app端的token,這樣的好處是原來基于token的鑒權邏輯都不用改

仿照oauth授權頒發新token

整個過程其實有點像oauth,pc端是client,server端是資源和認證中心,手機端是具有登錄態的用戶。手機端掃描二維碼,然后用戶確認授權,server端給pc端頒發token,然后pc端就可以訪問server端的資源了。這種就在原來的認證基礎上支持另外一類oauth的token校驗,貌似有點復雜
另外一個變形是新頒發token,但跟app端的token有個關聯映射,最終鑒權的時候還去找原來授權的token去鑒權,這樣的好處是原來的token失效,經過它授權的token也失效
二維碼過期

一種是基于redis來做過期,一種是使用數據庫,但是設置expired time來判斷

安全問題

QRLJacking全稱Quick Response Code Login Jacking,是session劫持的一種。

原理

具體是怎么劫持的呢,假設攻擊者將web登錄二維碼偽裝為公眾號二維碼,讓用戶去掃描,用戶一不小心點擊確認,攻擊者的就可以登錄用戶的web系統,或者利用那個token/session去盜取用戶的相關信息或做相關操作。

防范

二維碼超時機制

二維碼增加超時機制之后,會增加攻擊者攻擊的難度,不過攻擊者也可能利用腳本去自動刷新二維碼

確認機制

二維碼掃描一定要有這個確認的頁面,明確告知用戶要做的操作,假設沒有確認這個環節,那么是極其容易上當的。另外,二維碼掃描確認之后,再往用戶app或手機等發送登錄提醒的通知,告知如果不是本人登錄的,則建議用戶立即修改密碼

Sound-based Authentication

確認階段改為雙邊語音確認,而不是簡單的用戶點擊確認按鈕。語音是根據用戶id、二維碼id等加密生成,在app端播放,然后pc端語音識別之后才能完成整個登錄過程。這個可以有效防止遠程攻擊。同樣的思路,改語音為one time password也行,增加了確認過程的復雜度,也就增加了攻擊的難度。

小結

二維碼掃描登錄是個挺潮流的功能,這要求既有系統增加改造,也要求針對這種形式的登錄帶來潛在的攻擊進行安全防范。

doc

SQRL (Secure Quick Reliable Login)

掃碼登錄的安全性分析

模擬實現微信掃描二維碼登錄PC網站

Web應用多賬號系統設計及微信掃碼登錄實現

即時通信系統中如何實現:支持PC端和移動端同時在線(即支持同帳號多設備同時登錄)?

Quick authentication using mobile devices and QR Codes

OWASP Qrljacking

QRLJacking:如何劫持快速登陸時使用的二維碼

微信Netting-QRLJacking分析利用-掃我二維碼獲取你的賬號權限

文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。

轉載請注明本文地址:http://m.specialneedsforspecialkids.com/yun/11294.html

相關文章

  • Vue2 全家桶仿 微信App 項目,支持多人在線聊天和機器人聊天

    摘要:前言這個項目是利用工作之余寫的一個模仿微信的單頁面應用,整個項目包含個頁面,涉及實時群聊,機器人聊天,同學錄,朋友圈等等,后續頁面還是開發中。 前言 這個項目是利用工作之余寫的一個模仿微信app的單頁面應用,整個項目包含27個頁面,涉及實時群聊,機器人聊天,同學錄,朋友圈等等,后續頁面還是開發中。寫這個項目主要目的是練習和熟悉vue和vuex的配合使用,利用socket.io實現實時聊...

    iliyaku 評論0 收藏0
  • 【小家Spring】聊聊Spring中的數據綁定 --- DataBinder本尊(源碼分析)

    摘要:對中的數據綁定場景,小伙伴們就再熟悉不過了。比如包下大名鼎鼎的源碼分析的源碼相對來說還是頗為復雜的,它提供的能力非常強大,也注定了它的方法非常多屬性也非常多。并且備注入群字樣,會手動邀請入群 每篇一句 唯有熱愛和堅持,才能讓你在程序人生中屹立不倒,切忌跟風什么語言或就學什么去~ 相關閱讀 【小家Spring】聊聊Spring中的數據綁定 --- 屬性訪問器PropertyAccesso...

    charles_paul 評論0 收藏0
  • 聊聊qrcode的detect position

    摘要:序本文主要介紹下的,也就是定位圖案,用于定位一張圖片中二維碼所處的位置。分類分為三類是和的原型,從到共種尺寸。是的改良版本,添加了對齊標記,從到共種尺寸。這里默認有個的概念,不同的對應不同的尺寸大小。最高,,所以最高是的矩陣。 序 本文主要介紹下qrcode的detect position,也就是定位圖案,用于定位一張圖片中二維碼所處的位置。 qrcode分類 QRCode 分為 Mo...

    legendaryedu 評論0 收藏0

發表評論

0條評論

Tikitoo

|高級講師

TA的文章

閱讀更多
最新活動
閱讀需要支付1元查看
<