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