@朱立雄 的答案,從回答可以看得出來他對技術(shù)細(xì)節(jié)并不了解。對前端開發(fā)有了解的同學(xué)隨便開個 Firebug 看看登錄過程的 Net 視圖基本就能大概看清楚這個過程。

我個人開發(fā)過程一般是和產(chǎn)品說,『你們提業(yè)務(wù)要求、" />

国产成人精品无码青草_亚洲国产美女精品久久久久∴_欧美人与鲁交大毛片免费_国产果冻豆传媒麻婆精东

15158846557 在線咨詢 在線咨詢
15158846557 在線咨詢
所在位置: 首頁 > 營銷資訊 > 網(wǎng)站運(yùn)營 > 微信掃描二維碼登錄網(wǎng)頁是什么原理,前后兩個事件是如何聯(lián)系的?

微信掃描二維碼登錄網(wǎng)頁是什么原理,前后兩個事件是如何聯(lián)系的?

時間:2022-07-29 16:42:02 | 來源:網(wǎng)站運(yùn)營

時間:2022-07-29 16:42:02 來源:網(wǎng)站運(yùn)營

反對

@朱立雄 的答案,從回答可以看得出來他對技術(shù)細(xì)節(jié)并不了解。對前端開發(fā)有了解的同學(xué)隨便開個 Firebug 看看登錄過程的 Net 視圖基本就能大概看清楚這個過程。

我個人開發(fā)過程一般是和產(chǎn)品說,『你們提業(yè)務(wù)要求、交互方式、性能要求等就好,技術(shù)方案我們會綜合開發(fā)時間、系統(tǒng)架構(gòu)等因素考慮』。

恰好我之前也花過幾個小時做過類似的驗(yàn)證登錄過程,這里作為探討,把產(chǎn)品同學(xué)的回答做個引用,解釋一下其中『不技術(shù)』的地方。

1. 每打開一次微信網(wǎng)頁版頁面的時候會隨機(jī)生成一個含有唯一uid的二維碼,每次刷新頁面都會不一樣(這個可以保證一個uid只可以綁定一個賬號和密碼,如果一個uid可以綁定多個賬號和密碼,那么很可能你的電腦會登陸別人的微信哦);
確實(shí)返回了唯一 id,但目的是為了識別用戶身份,而且實(shí)際上打開這個頁面的時候?yàn)g覽器已經(jīng)和 Server 創(chuàng)建了一個長連接等待確認(rèn)信息。

查看 http://wx.qq.com 的源碼可以看到,這個頁面在加載完畢時,也已經(jīng)把很多登錄后才需要的相關(guān)資源都預(yù)先加載進(jìn)來了,所以長連接等待登錄用戶得到確認(rèn)后展示用戶信息的速度很快,因?yàn)闊o需刷頁面和加載頭像外的其他資源。

2. 當(dāng)用戶使用登陸后的微信掃描該二維碼的時候,會將這個id和手機(jī)上的微信賬號及密碼綁定,并上傳到微信網(wǎng)頁版服務(wù)器;
先上個圖:

二維碼樣例:

http://weixin.qq.com/x/ARmFYVvUzczwBl9u6Y1I ,利用我查查之類的二維碼應(yīng)用可以得到類似這樣的地址,但并不會自動打開該地址,微信客戶端針對

http://weixin.qq.com/x/ 開頭的地址做了特殊處理,會自動獲取相關(guān)信息并提示確認(rèn)。 在手機(jī)版微信訪問這個頁面進(jìn)行確認(rèn)時,Server已經(jīng)同時獲得了客戶端信息,并通過之前保持的長連接告知瀏覽器。

3. 微信網(wǎng)頁版頁面每隔1秒或2秒會get請求該id對應(yīng)的微信賬號及密碼,如果id綁定上了微信賬號和密碼,那么就可以請求到賬號和密碼,就可以自動登陸了。
瀏覽器展示完長連接里包含的用戶信息(頭像等)后,會新開一個長連接等待客戶端的確認(rèn)操作,其 URL 類似

https://login.weixin.qq.com/cgi-bin/mmwebwx-bin/login?uuid=794ecedd804f47&tip=1&_=1395748413642 。從安全的角度來說,無論如何都不會讓客戶端獲得微信帳號和密碼的。要知道,密碼這玩意騰訊自己都不敢保存(有興趣的同學(xué)可以自行了解下 CSDN 明文密碼泄露事件),肯定是不可能返回給瀏覽器的。

而且從體感來看,怎么著都不可能是頁面1-2秒輪詢發(fā)起GET請求的,實(shí)際是通過堵塞等待的長連接,近乎實(shí)時的獲得信息。 對于驗(yàn)證過程,Open API 一般是通過授權(quán)令牌(Token)來解決的,原理是當(dāng)用戶通過授權(quán)后,分配一個限定條件下的令牌(如限制本機(jī)訪問、限制授權(quán)有效時間、限制同時登錄設(shè)備數(shù)等),使獲得授權(quán)的用戶僅在有限的前提下能訪問相關(guān)服務(wù)。 像計算機(jī)休眠后曾做的授權(quán)就自動收回了,這樣就有效的避免了在別人電腦上(尤其是網(wǎng)吧)打開,但忘記關(guān)閉或退出這類安全問題了。

同時,整個授權(quán)過程的驗(yàn)證部分在手機(jī)端進(jìn)行,有效杜絕了 PC 上泛濫的各類木馬、『安全工具』的監(jiān)聽,大大降低了帳號被盜的風(fēng)險。

所以說,核心過程應(yīng)該是:瀏覽器獲得一個臨時 id,通過長連接等待客戶端掃描帶有此 id 的二維碼后,從長連接中獲得客戶端上報給 server 的帳號信息進(jìn)行展示。 并在客戶端點(diǎn)擊確認(rèn)后,獲得服務(wù)器授信的令牌,進(jìn)行隨后的信息交互過程。 在超時、網(wǎng)絡(luò)斷開、其他設(shè)備上登錄后,此前獲得的令牌或丟失、或失效,對授權(quán)過程形成有效的安全防護(hù)。

關(guān)鍵詞:聯(lián)系,原理,掃描

74
73
25
news

版權(quán)所有? 億企邦 1997-2025 保留一切法律許可權(quán)利。

為了最佳展示效果,本站不支持IE9及以下版本的瀏覽器,建議您使用谷歌Chrome瀏覽器。 點(diǎn)擊下載Chrome瀏覽器
關(guān)閉