日本黄色一级经典视频|伊人久久精品视频|亚洲黄色色周成人视频九九九|av免费网址黄色小短片|黄色Av无码亚洲成年人|亚洲1区2区3区无码|真人黄片免费观看|无码一级小说欧美日免费三级|日韩中文字幕91在线看|精品久久久无码中文字幕边打电话

當(dāng)前位置:首頁 > 單片機(jī) > 架構(gòu)師社區(qū)
[導(dǎo)讀]菜菜哥,請(qǐng)教個(gè)問題唄? 說說看,能否解決不敢保證哦 最近做的App業(yè)務(wù)中,有很多敏感操作需要用戶輸入手機(jī)驗(yàn)證碼 這沒問題,手機(jī)驗(yàn)證碼主要是為了驗(yàn)證當(dāng)前操作人的有效性,有什么問題呢? 如果有數(shù)的幾個(gè)操作還可以,但是系統(tǒng)有很多敏感操作,已經(jīng)有用戶反饋

程序員過關(guān)斬將--從用戶輸入手機(jī)驗(yàn)證碼開始

菜菜哥,請(qǐng)教個(gè)問題唄?

程序員過關(guān)斬將--從用戶輸入手機(jī)驗(yàn)證碼開始
程序員過關(guān)斬將--從用戶輸入手機(jī)驗(yàn)證碼開始

說說看,能否解決不敢保證哦

程序員過關(guān)斬將--從用戶輸入手機(jī)驗(yàn)證碼開始
程序員過關(guān)斬將--從用戶輸入手機(jī)驗(yàn)證碼開始

最近做的App業(yè)務(wù)中,有很多敏感操作需要用戶輸入手機(jī)驗(yàn)證碼

程序員過關(guān)斬將--從用戶輸入手機(jī)驗(yàn)證碼開始
程序員過關(guān)斬將--從用戶輸入手機(jī)驗(yàn)證碼開始

這沒問題,手機(jī)驗(yàn)證碼主要是為了驗(yàn)證當(dāng)前操作人的有效性,有什么問題呢?

程序員過關(guān)斬將--從用戶輸入手機(jī)驗(yàn)證碼開始
程序員過關(guān)斬將--從用戶輸入手機(jī)驗(yàn)證碼開始

如果有數(shù)的幾個(gè)操作還可以,但是系統(tǒng)有很多敏感操作,已經(jīng)有用戶反饋太麻煩了

程序員過關(guān)斬將--從用戶輸入手機(jī)驗(yàn)證碼開始
程序員過關(guān)斬將--從用戶輸入手機(jī)驗(yàn)證碼開始

敏感操作驗(yàn)證用戶的有效性是肯定要加的,那你想怎么做呢?

程序員過關(guān)斬將--從用戶輸入手機(jī)驗(yàn)證碼開始
程序員過關(guān)斬將--從用戶輸入手機(jī)驗(yàn)證碼開始

我也不知道,所以才想請(qǐng)教你哦

程序員過關(guān)斬將--從用戶輸入手機(jī)驗(yàn)證碼開始
程序員過關(guān)斬將--從用戶輸入手機(jī)驗(yàn)證碼開始

這個(gè)嘛

程序員過關(guān)斬將--從用戶輸入手機(jī)驗(yàn)證碼開始
程序員過關(guān)斬將--從用戶輸入手機(jī)驗(yàn)證碼開始
程序員過關(guān)斬將--從用戶輸入手機(jī)驗(yàn)證碼開始

驗(yàn)證用戶的有效性或者安全性,是每個(gè)系統(tǒng)必備的安全措施,在移動(dòng)端優(yōu)先的時(shí)代,利用手機(jī)驗(yàn)證碼來驗(yàn)證用戶,算是安全系數(shù)比較高的手段。放眼當(dāng)下幾乎所有的互聯(lián)網(wǎng)應(yīng)用幾乎都開放了手機(jī)驗(yàn)證碼登錄,而且應(yīng)用內(nèi)的敏感操作都需要手機(jī)驗(yàn)證碼或者指紋,甚至面部識(shí)別來確定當(dāng)前操作人的權(quán)限。

拋開其他端,單就移動(dòng)端App方式而言,如果用戶頻繁進(jìn)行敏感操作,需要頻繁發(fā)送驗(yàn)證碼,其實(shí)在用戶體驗(yàn)上并不友好,況且短信費(fèi)用也隨之增加。就App形式而言,驗(yàn)證一個(gè)用戶的有效性其實(shí)可以演變?yōu)轵?yàn)證設(shè)備的有效性,即:當(dāng)前人在當(dāng)前設(shè)備上是否可信。

確實(shí)是這樣,利用驗(yàn)證碼方式最終目的也是驗(yàn)證的這個(gè)設(shè)備的安全性

程序員過關(guān)斬將--從用戶輸入手機(jī)驗(yàn)證碼開始
程序員過關(guān)斬將--從用戶輸入手機(jī)驗(yàn)證碼開始

所以如果有辦法驗(yàn)證設(shè)備的安全性,就沒有必要讓同一個(gè)用戶在同一個(gè)設(shè)備上頻繁輸入憑證了

程序員過關(guān)斬將--從用戶輸入手機(jī)驗(yàn)證碼開始
程序員過關(guān)斬將--從用戶輸入手機(jī)驗(yàn)證碼開始

那有什么辦法呢?

程序員過關(guān)斬將--從用戶輸入手機(jī)驗(yàn)證碼開始
程序員過關(guān)斬將--從用戶輸入手機(jī)驗(yàn)證碼開始

用戶設(shè)備的安全,首先得有設(shè)備標(biāo)示才行,如果拋開web應(yīng)用,單就App來說,這個(gè)很容易,只是客戶端一個(gè)設(shè)備號(hào)而已。而且我們這里討論的也是非Web的環(huán)境。

程序員過關(guān)斬將--從用戶輸入手機(jī)驗(yàn)證碼開始
程序員過關(guān)斬將--從用戶輸入手機(jī)驗(yàn)證碼開始

以下討論只針對(duì)非Web(瀏覽器)環(huán)境,Web環(huán)境其實(shí)也可以根據(jù)瀏覽器的信息來生成一個(gè)類似設(shè)備標(biāo)示的代碼

程序員過關(guān)斬將--從用戶輸入手機(jī)驗(yàn)證碼開始


程序員過關(guān)斬將--從用戶輸入手機(jī)驗(yàn)證碼開始

很多系統(tǒng)在設(shè)計(jì)之初,就已經(jīng)考慮到安全主設(shè)備的概念,就像微信,如果在同一個(gè)手機(jī)上打開是不需要每次都進(jìn)行登錄操作的。進(jìn)行設(shè)備驗(yàn)證是每個(gè)安全系統(tǒng)比較重要的部分,推薦在系統(tǒng)設(shè)計(jì)之初就要考慮?;貧w正題,對(duì)于很多行業(yè)來說,用戶在App內(nèi)頻繁進(jìn)行一些敏感操作是很正常的,比如我所在的在線教育行業(yè),老師會(huì)很頻繁的在一個(gè)班級(jí)內(nèi)添加學(xué)生和老師(我們認(rèn)為這些操作屬于敏感操作)。如果每次都需要老師發(fā)送驗(yàn)證碼來進(jìn)行操作,那交互上真的是太不友好。要想保證業(yè)務(wù)操作的安全性以及改善交互操作,我們就需要抽象出問題的根本所在。


發(fā)送驗(yàn)證碼操作最終的目的是為了驗(yàn)證操作人是操作人,聽起來很繞是不是。實(shí)現(xiàn)這個(gè)最終目的,其實(shí)有很多解決方案,其中用戶可信設(shè)備就屬于其中一類,而手機(jī)驗(yàn)證碼方式又是用戶可信設(shè)備實(shí)現(xiàn)的一種方式,具體來說有幾點(diǎn):

1. 用戶利用手機(jī)驗(yàn)證碼在這個(gè)設(shè)備上進(jìn)行過敏感操作,就認(rèn)為這個(gè)設(shè)備在一段時(shí)間內(nèi)是可信任的。

2. 用戶在可信任的設(shè)備上進(jìn)行其他敏感操作,如果在有效期內(nèi),就可以做到不發(fā)送驗(yàn)證碼

3. 用戶的敏感操作也可以進(jìn)行分級(jí),最高敏感級(jí)必須輸入驗(yàn)證碼才可以進(jìn)行操作(比如重置密碼,驗(yàn)證碼登陸),一般敏感級(jí)在可信設(shè)備有效期內(nèi)可以不輸入驗(yàn)證碼。


程序員過關(guān)斬將--從用戶輸入手機(jī)驗(yàn)證碼開始

基于以上所說,系統(tǒng)設(shè)計(jì)的時(shí)候就可以抽象出一個(gè)用戶可信設(shè)備中心,包括敏感操作的定義,可信設(shè)備的有效時(shí)長(zhǎng),可信設(shè)備的定義(比如:驗(yàn)證碼通過的設(shè)備可定義為有效設(shè)備)等等概念。通過這樣設(shè)計(jì),短信驗(yàn)證只不過成為驗(yàn)證用戶信任設(shè)備的一種途經(jīng),完全可以做到和具體業(yè)務(wù)無關(guān)(敏感級(jí)別最高操作除外),一般敏感的操作業(yè)務(wù)接口也可以避免添加驗(yàn)證碼參數(shù),真正的把驗(yàn)證和業(yè)務(wù)相分離,豈不美哉?


經(jīng)過這樣抽象,用戶可信設(shè)備中心其實(shí)本質(zhì)的接口只有幾個(gè):

1. 驗(yàn)證設(shè)備是否有效

2. 設(shè)置設(shè)備有效

3. 設(shè)備有效的途經(jīng)(例如短信驗(yàn)證碼方式)


當(dāng)然你的系統(tǒng)首先要有設(shè)備的概念,如果非要寫幾行代碼的話

1. 驗(yàn)證設(shè)備有效

public async Task<intCheckUserDevice(UserDeviceReq para)
        
{

            if (para == null || string.IsNullOrWhiteSpace(para.DeviceName) || para.UserId <= 0)
            {
                return 0;
            }
            //檢查簽名
            var sign = EncrypHelper.MD5Encrypt($"{SysConfig.SecretKey}_{para.UserId}_{para.DeviceName}");
            if (sign != para.Sign)
            {
                return 0;
            }
            string key = $"{para.UserId}_{para.DeviceName}";
            var authRet = await RedisClient.GetString(key);
            if (string.IsNullOrWhiteSpace(authRet))
            {
                //告訴客戶端需要短信驗(yàn)證碼
                return 414000;
            }
            return 1;
        }


2. 設(shè)置設(shè)備有效

public async Task<intSetUserDevice(UserDeviceReq para)
        
{

            if (para == null || string.IsNullOrWhiteSpace(para.DeviceName) || para.UserId <= 0)
            {
                return 0;
            }
            //檢查簽名
            var sign = EncrypHelper.MD5Encrypt($"{SysConfig.SecretKey}_{para.UserId}_{para.DeviceName}");
            if (sign != para.Sign)
            {
                return 0;
            }
            string key = $"{para.UserId}_{para.DeviceName}";
            var cacheRet = await RedisClient.GetString(key);
            if (string.IsNullOrWhiteSpace(cacheRet))
            {
                UserDeviceInfo value = new UserDeviceInfo() { UserId = para.UserId, DeviceName = para.DeviceName, OperationCode = para.OperationCode, CreateDate = DateTime.Now, Context = "" };
                var userDeviceExp = SysConfig.GetAppSetting("Config:UserDeviceExpire");
                if (string.IsNullOrWhiteSpace(userDeviceExp))
                {
                    userDeviceExp = "300";
                }
                var authRet = await RedisClient.SetString(key, JsonConvert.SerializeObject(value), TimeSpan.FromMinutes(int.Parse(userDeviceExp)));
                if (!authRet)
                {
                    return 0;
                }
            }
            return 1;
        }


特別推薦一個(gè)分享架構(gòu)+算法的優(yōu)質(zhì)內(nèi)容,還沒關(guān)注的小伙伴,可以長(zhǎng)按關(guān)注一下:

程序員過關(guān)斬將--從用戶輸入手機(jī)驗(yàn)證碼開始

長(zhǎng)按訂閱更多精彩▼

程序員過關(guān)斬將--從用戶輸入手機(jī)驗(yàn)證碼開始

如有收獲,點(diǎn)個(gè)在看,誠摯感謝

免責(zé)聲明:本文內(nèi)容由21ic獲得授權(quán)后發(fā)布,版權(quán)歸原作者所有,本平臺(tái)僅提供信息存儲(chǔ)服務(wù)。文章僅代表作者個(gè)人觀點(diǎn),不代表本平臺(tái)立場(chǎng),如有問題,請(qǐng)聯(lián)系我們,謝謝!

本站聲明: 本文章由作者或相關(guān)機(jī)構(gòu)授權(quán)發(fā)布,目的在于傳遞更多信息,并不代表本站贊同其觀點(diǎn),本站亦不保證或承諾內(nèi)容真實(shí)性等。需要轉(zhuǎn)載請(qǐng)聯(lián)系該專欄作者,如若文章內(nèi)容侵犯您的權(quán)益,請(qǐng)及時(shí)聯(lián)系本站刪除。
換一批
延伸閱讀

LED驅(qū)動(dòng)電源的輸入包括高壓工頻交流(即市電)、低壓直流、高壓直流、低壓高頻交流(如電子變壓器的輸出)等。

關(guān)鍵字: 驅(qū)動(dòng)電源

在工業(yè)自動(dòng)化蓬勃發(fā)展的當(dāng)下,工業(yè)電機(jī)作為核心動(dòng)力設(shè)備,其驅(qū)動(dòng)電源的性能直接關(guān)系到整個(gè)系統(tǒng)的穩(wěn)定性和可靠性。其中,反電動(dòng)勢(shì)抑制與過流保護(hù)是驅(qū)動(dòng)電源設(shè)計(jì)中至關(guān)重要的兩個(gè)環(huán)節(jié),集成化方案的設(shè)計(jì)成為提升電機(jī)驅(qū)動(dòng)性能的關(guān)鍵。

關(guān)鍵字: 工業(yè)電機(jī) 驅(qū)動(dòng)電源

LED 驅(qū)動(dòng)電源作為 LED 照明系統(tǒng)的 “心臟”,其穩(wěn)定性直接決定了整個(gè)照明設(shè)備的使用壽命。然而,在實(shí)際應(yīng)用中,LED 驅(qū)動(dòng)電源易損壞的問題卻十分常見,不僅增加了維護(hù)成本,還影響了用戶體驗(yàn)。要解決這一問題,需從設(shè)計(jì)、生...

關(guān)鍵字: 驅(qū)動(dòng)電源 照明系統(tǒng) 散熱

根據(jù)LED驅(qū)動(dòng)電源的公式,電感內(nèi)電流波動(dòng)大小和電感值成反比,輸出紋波和輸出電容值成反比。所以加大電感值和輸出電容值可以減小紋波。

關(guān)鍵字: LED 設(shè)計(jì) 驅(qū)動(dòng)電源

電動(dòng)汽車(EV)作為新能源汽車的重要代表,正逐漸成為全球汽車產(chǎn)業(yè)的重要發(fā)展方向。電動(dòng)汽車的核心技術(shù)之一是電機(jī)驅(qū)動(dòng)控制系統(tǒng),而絕緣柵雙極型晶體管(IGBT)作為電機(jī)驅(qū)動(dòng)系統(tǒng)中的關(guān)鍵元件,其性能直接影響到電動(dòng)汽車的動(dòng)力性能和...

關(guān)鍵字: 電動(dòng)汽車 新能源 驅(qū)動(dòng)電源

在現(xiàn)代城市建設(shè)中,街道及停車場(chǎng)照明作為基礎(chǔ)設(shè)施的重要組成部分,其質(zhì)量和效率直接關(guān)系到城市的公共安全、居民生活質(zhì)量和能源利用效率。隨著科技的進(jìn)步,高亮度白光發(fā)光二極管(LED)因其獨(dú)特的優(yōu)勢(shì)逐漸取代傳統(tǒng)光源,成為大功率區(qū)域...

關(guān)鍵字: 發(fā)光二極管 驅(qū)動(dòng)電源 LED

LED通用照明設(shè)計(jì)工程師會(huì)遇到許多挑戰(zhàn),如功率密度、功率因數(shù)校正(PFC)、空間受限和可靠性等。

關(guān)鍵字: LED 驅(qū)動(dòng)電源 功率因數(shù)校正

在LED照明技術(shù)日益普及的今天,LED驅(qū)動(dòng)電源的電磁干擾(EMI)問題成為了一個(gè)不可忽視的挑戰(zhàn)。電磁干擾不僅會(huì)影響LED燈具的正常工作,還可能對(duì)周圍電子設(shè)備造成不利影響,甚至引發(fā)系統(tǒng)故障。因此,采取有效的硬件措施來解決L...

關(guān)鍵字: LED照明技術(shù) 電磁干擾 驅(qū)動(dòng)電源

開關(guān)電源具有效率高的特性,而且開關(guān)電源的變壓器體積比串聯(lián)穩(wěn)壓型電源的要小得多,電源電路比較整潔,整機(jī)重量也有所下降,所以,現(xiàn)在的LED驅(qū)動(dòng)電源

關(guān)鍵字: LED 驅(qū)動(dòng)電源 開關(guān)電源

LED驅(qū)動(dòng)電源是把電源供應(yīng)轉(zhuǎn)換為特定的電壓電流以驅(qū)動(dòng)LED發(fā)光的電壓轉(zhuǎn)換器,通常情況下:LED驅(qū)動(dòng)電源的輸入包括高壓工頻交流(即市電)、低壓直流、高壓直流、低壓高頻交流(如電子變壓器的輸出)等。

關(guān)鍵字: LED 隧道燈 驅(qū)動(dòng)電源
關(guān)閉