<em>Mac</em>Book项目 2009年学校开始实施<em>Mac</em>Book项目,所有师生配备一本<em>Mac</em>Book,并同步更新了校园无线网络。学校每周进行电脑技术更新,每月发送技术支持资料,极大改变了教学及学习方式。因此2011
2021-06-01 09:32:01
傳統的使用者名稱密碼方式,容易洩漏,並不安全。
你說,加上簡訊驗證碼不就安全了,其實簡訊驗證碼也是不安全的,容易被攔截和偽造,SIM 卡也可以克隆,已經有案例,先偽造身份證,再申請一模一樣的手機號碼,把錢轉走。
因此就有了 Two-factor authentication,簡稱 2FA,也就是雙因素驗證。最常見的就是使用者名稱密碼,再加一個動態碼。動態碼通常由隨身攜帶的移動裝置上生成,比如 U 盾、手機。
動態碼最常見的實現演演算法就是 One-Time Password(OTP),是基於時間的一次性密碼,它是公認的可靠解決方案,已經寫入國際標準 RFC6238。比如我們最常用的 Google Authenticator,就是 OTP。
那麼,知道了 2FA,接下來應該考慮的事,就是如何讓你用 Python 寫的網站實現 2FA。
輪子其實已經有了,那就是 PyOTP,結合自己的理解,分享一下它的用法。
pip 安裝,不多說。
pip install pyotp
配對就是移動裝置和我們的 web 伺服器配對。
首先,在伺服器上使用如下程式碼生成一次性金鑰:
>>> import pyotp >>> pyotp.random_base32() 'BZ4TOJD4JWWJWPQBKP23FA55EMHA25Y2' >>>
然後將這個金鑰以二維條碼的形式讓手機(移動裝置)掃描,掃描之後,手機上的應用就儲存了這個金鑰。
接下來,在手機上就可以使用下面這段邏輯產生動態密碼了。
>>> totp = pyotp.TOTP('BZ4TOJD4JWWJWPQBKP23FA55EMHA25Y2') >>> totp.now() '941782' >>>
現在,你有 30 秒的時間將這個 6 位數密碼提交到伺服器(輸入到網頁上),伺服器伺服器也使用同樣的金鑰和當前時間戳,生成一個動態碼,跟使用者提交的動態碼比對。只要兩者不一致,就驗證失敗,也就是下面這段邏輯,如果超過 30 秒,(當然,30 秒可以自定義),也會失效:
>>> 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
不用,我們直接使用現成的 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策略,雙因索認證更像為補充完整解決方案的最終安全層。
雙因素認證的使用場景
簡單來說,雙因索認證用於保護業務系統賬號,否則業務系統很容易遭遇賬號接管攻擊。最終導致大規模的資料洩露。
到此這篇關於Python實現雙因素驗證2FA的範例程式碼的文章就介紹到這了,更多相關Python雙因素驗證2FA內容請搜尋it145.com以前的文章或繼續瀏覽下面的相關文章希望大家以後多多支援it145.com!
相關文章
<em>Mac</em>Book项目 2009年学校开始实施<em>Mac</em>Book项目,所有师生配备一本<em>Mac</em>Book,并同步更新了校园无线网络。学校每周进行电脑技术更新,每月发送技术支持资料,极大改变了教学及学习方式。因此2011
2021-06-01 09:32:01
综合看Anker超能充系列的性价比很高,并且与不仅和iPhone12/苹果<em>Mac</em>Book很配,而且适合多设备充电需求的日常使用或差旅场景,不管是安卓还是Switch同样也能用得上它,希望这次分享能给准备购入充电器的小伙伴们有所
2021-06-01 09:31:42
除了L4WUDU与吴亦凡已经多次共事,成为了明面上的厂牌成员,吴亦凡还曾带领20XXCLUB全队参加2020年的一场音乐节,这也是20XXCLUB首次全员合照,王嗣尧Turbo、陈彦希Regi、<em>Mac</em> Ova Seas、林渝植等人全部出场。然而让
2021-06-01 09:31:34
目前应用IPFS的机构:1 谷歌<em>浏览器</em>支持IPFS分布式协议 2 万维网 (历史档案博物馆)数据库 3 火狐<em>浏览器</em>支持 IPFS分布式协议 4 EOS 等数字货币数据存储 5 美国国会图书馆,历史资料永久保存在 IPFS 6 加
2021-06-01 09:31:24
开拓者的车机是兼容苹果和<em>安卓</em>,虽然我不怎么用,但确实兼顾了我家人的很多需求:副驾的门板还配有解锁开关,有的时候老婆开车,下车的时候偶尔会忘记解锁,我在副驾驶可以自己开门:第二排设计很好,不仅配置了一个很大的
2021-06-01 09:30:48
不仅是<em>安卓</em>手机,苹果手机的降价力度也是前所未有了,iPhone12也“跳水价”了,发布价是6799元,如今已经跌至5308元,降价幅度超过1400元,最新定价确认了。iPhone12是苹果首款5G手机,同时也是全球首款5nm芯片的智能机,它
2021-06-01 09:30:45