小編寫這篇文章的目的,主要是給大家講解Python的一些內(nèi)容,比如Python實(shí)現(xiàn)雙因素驗(yàn)證2FA的示例代碼,那么,具體的代碼是什么呢?下面就給大家詳細(xì)解答下。
介紹
傳統(tǒng)的用戶名密碼方式,容易泄漏,并不安全。
你說,加上短信驗(yàn)證碼不就安全了,其實(shí)短信驗(yàn)證碼也是不安全的,容易被攔截和偽造,SIM卡也可以克隆,已經(jīng)有案例,先偽造身份證,再申請(qǐng)一模一樣的手機(jī)號(hào)碼,把錢轉(zhuǎn)走。
因此就有了Two-factor authentication,簡稱2FA,也就是雙因素驗(yàn)證。最常見的就是用戶名密碼,再加一個(gè)動(dòng)態(tài)碼。動(dòng)態(tài)碼通常由隨身攜帶的移動(dòng)設(shè)備上生成,比如U盾、手機(jī)。
動(dòng)態(tài)碼最常見的實(shí)現(xiàn)算法就是One-Time Password(OTP),是基于時(shí)間的一次性密碼,它是公認(rèn)的可靠解決方案,已經(jīng)寫入國際標(biāo)準(zhǔn)RFC6238。比如我們最常用的Google Authenticator,就是OTP。
那么,知道了2FA,接下來應(yīng)該考慮的事,就是如何讓你用Python寫的網(wǎng)站實(shí)現(xiàn)2FA。
輪子其實(shí)已經(jīng)有了,那就是PyOTP,結(jié)合自己的理解,分享一下它的用法。
1.安裝
pip安裝,不多說。
pip install pyotp
2.配對(duì)
配對(duì)就是移動(dòng)設(shè)備和我們的web服務(wù)器配對(duì)。
首先,在服務(wù)器上使用如下代碼生成一次性密鑰:
import pyotp pyotp.random_base32() 'BZ4TOJD4JWWJWPQBKP23FA55EMHA25Y2'
然后將這個(gè)密鑰以二維碼的形式讓手機(jī)(移動(dòng)設(shè)備)掃描,掃描之后,手機(jī)上的應(yīng)用就保存了這個(gè)密鑰。
3.驗(yàn)證
接下來,在手機(jī)上就可以使用下面這段邏輯產(chǎn)生動(dòng)態(tài)密碼了。
totp=pyotp.TOTP('BZ4TOJD4JWWJWPQBKP23FA55EMHA25Y2') totp.now() '941782'
現(xiàn)在,你有30秒的時(shí)間將這個(gè)6位數(shù)密碼提交到服務(wù)器(輸入到網(wǎng)頁上),服務(wù)器服務(wù)器也使用同樣的密鑰和當(dāng)前時(shí)間戳,生成一個(gè)動(dòng)態(tài)碼,跟用戶提交的動(dòng)態(tài)碼比對(duì)。只要兩者不一致,就驗(yàn)證失敗,也就是下面這段邏輯,如果超過30秒,(當(dāng)然,30秒可以自定義),也會(huì)失效:
=pyotp.TOTP('BZ4TOJD4JWWJWPQBKP23FA55EMHA25Y2') totp.verify('941782') True time.sleep(30) totp.verify('941782') False totp=pyotp.TOTP('BZ4TOJD4JWWJWPQBKP23FA55EMHA25Y2') totp.verify('941782') True time.sleep(30) totp.verify('941782') False
除了使用基于時(shí)間的動(dòng)態(tài)密碼,也可以用基于計(jì)數(shù)的動(dòng)態(tài)密碼,邏輯如下:
hotp=pyotp.HOTP('base32secret3232') hotp.at(0)#=>'260182' hotp.at(1)#=>'055283' hotp.at(1401)#=>'316439' #OTP verified with a counter hotp.verify('316439',1401)#=>True hotp.verify('316439',1402)#=>False
4.那是不是手機(jī)上還有開發(fā)個(gè)app
不用,我們直接使用現(xiàn)成的Google Authenticator就可以了。
如果你已安裝了Google Authenticator,請(qǐng)點(diǎn)擊:heavy_plus_sign:添加密鑰,然后掃描下發(fā)的二維碼,就可以生成動(dòng)態(tài)碼:
然后你可以執(zhí)行下面這段代碼,就可以發(fā)現(xiàn)pyotp產(chǎn)生的動(dòng)態(tài)碼和Google Authenticator產(chǎn)生的是一致的:
import pyotp totp=pyotp.TOTP("JBSWY3DPEHPK3PXP") print("Current OTP:",totp.now())
其實(shí)二維碼的信息就是JBSWY3DPEHPK3PXP。
這樣,我們用Google Authenticator來產(chǎn)生動(dòng)態(tài)密碼,網(wǎng)站上進(jìn)行二次驗(yàn)證,就可以實(shí)現(xiàn)2FA了。
知識(shí)點(diǎn)補(bǔ)充
雙因素認(rèn)證的含義及工作原理
雙因素認(rèn)證是-種賬號(hào)驗(yàn)證過程,顧名思義,除用戶名和密碼之外還需要第二因素核驗(yàn)用戶的登錄憑證。第二因素很難被網(wǎng)絡(luò)不法分子復(fù)制,例如個(gè)人安全問題戲發(fā)送到個(gè)人安全設(shè)備上的動(dòng)態(tài)密碼。
雙因索認(rèn)證的步驟根據(jù)所選驗(yàn)證因素略有不同,比如設(shè)置成個(gè)人安全問題可能要回答母親的婚前姓氏,或兒時(shí)居住的街道名稱等,設(shè)置成動(dòng)態(tài)密碼就需要在登錄界面輸入發(fā)送到用戶移動(dòng)設(shè)備上的臨時(shí)登錄密碼。但無論設(shè)置哪種第二因素,都要求用戶在輸入用戶名和密碼后提供額外的安全提示。
對(duì)于最高級(jí)別的訪問管理,大多數(shù)雙因素認(rèn)證工具會(huì)要求用戶每次登錄都出示安全提示。
雙因素認(rèn)證在身份和訪問管理中的作用
身份和訪問管理(IAM)是企業(yè)用來控制對(duì)IT資源和設(shè)備的訪問權(quán)限及訪問許可級(jí)別的總體策略。多因素認(rèn)證(MFA)也屬于IAM,但雙因索認(rèn)證本身并不是完整的IAM安全解決方案。比起IAM策略,雙因索認(rèn)證更像為補(bǔ)充完整解決方案的最終安全層。
雙因素認(rèn)證的使用場景
簡單來說,雙因索認(rèn)證用于保護(hù)業(yè)務(wù)系統(tǒng)賬號(hào),否則業(yè)務(wù)系統(tǒng)很容易遭遇賬號(hào)接管攻擊。最終導(dǎo)致大規(guī)模的數(shù)據(jù)泄露。
到此為止,這篇文章就為大家介紹到這里了,希望可以給大家?guī)硪欢ǖ膸椭?/p>
文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請(qǐng)注明本文地址:http://www.ezyhdfw.cn/yun/128060.html
摘要:民主化和的廣泛應(yīng)用意味著每個(gè)人都需要了解云計(jì)算應(yīng)用程序的安全性。以下將提出一些關(guān)于應(yīng)用程序安全性的基本問題。實(shí)際上,在年棄用了,其中采用傳輸層安全替代了。更智能的應(yīng)用程序或管理覆蓋可以幫助標(biāo)記和安全鎖定。IT民主化和SaaS的廣泛應(yīng)用意味著每個(gè)人都需要了解SaaS云計(jì)算應(yīng)用程序的安全性。人們可以想象一下沒有軟件即服務(wù)(SaaS)的場景,這真的很難做到,因?yàn)楹芏嗥髽I(yè)、組織和個(gè)人幾乎每天都依賴這...
摘要:比特幣開發(fā)教程,本課程面向初學(xué)者,內(nèi)容即涵蓋比特幣的核心概念,例如區(qū)塊鏈存儲(chǔ)去中心化共識(shí)機(jī)制密鑰與腳本交易與等,同時(shí)也詳細(xì)講解如何在代碼中集成比特幣支持功能,例如創(chuàng)建地址管理錢包構(gòu)造裸交易等,是工程師不可多得的比特幣開發(fā)學(xué)習(xí)課程。 這是Coinbase Wallet API v2的官方客戶端庫。我們提供直觀,穩(wěn)定的界面,將Coinbase Wallet集成到的PHP項(xiàng)目中。 重要提示:...
摘要:比特幣開發(fā)教程,本課程面向初學(xué)者,內(nèi)容即涵蓋比特幣的核心概念,例如區(qū)塊鏈存儲(chǔ)去中心化共識(shí)機(jī)制密鑰與腳本交易與等,同時(shí)也詳細(xì)講解如何在代碼中集成比特幣支持功能,例如創(chuàng)建地址管理錢包構(gòu)造裸交易等,是工程師不可多得的比特幣開發(fā)學(xué)習(xí)課程。 這是Coinbase Wallet API v2的官方客戶端庫。我們提供直觀,穩(wěn)定的界面,將Coinbase Wallet集成到的PHP項(xiàng)目中。 重要提示:...
摘要:表示,這是首次在上傳至的惡意軟件中發(fā)現(xiàn)這種技術(shù)。軟件開發(fā)和版本控制平臺(tái)還透露,它解決了注冊(cè)表中的多個(gè)缺陷,這些缺陷可能會(huì)泄露私有包的名稱,并允許攻擊者繞過身份驗(yàn)證,在不需要任何授權(quán)的情況下發(fā)布任何包的版本。 .markdown-body{word-break:break-word;line-height:1.75;font-weight:400;font-size:15px;overflo...
摘要:官網(wǎng)促銷套餐證書可節(jié)省高達(dá)和高級(jí)節(jié)省高達(dá)域名托管和電子郵件可節(jié)省高達(dá)免費(fèi)安全功能不要忘記激活一流的安全功能,這些功能作為您的帳戶的標(biāo)準(zhǔn)配置。確保您的帳戶與雙因素身份驗(yàn)證絕對(duì)免費(fèi),并確保您的個(gè)人信息保持前目錄與免費(fèi)域名隱私終身 官網(wǎng):https://www.namecheap.com/ 促銷套餐: SSL 證書可節(jié)省高達(dá) 56% CDN 和高級(jí)DNS節(jié)省高達(dá) 65%...
閱讀 1067·2023-01-14 11:38
閱讀 1062·2023-01-14 11:04
閱讀 904·2023-01-14 10:48
閱讀 2380·2023-01-14 10:34
閱讀 1147·2023-01-14 10:24
閱讀 1026·2023-01-14 10:18
閱讀 655·2023-01-14 10:09
閱讀 733·2023-01-14 10:02