成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

什么是雙因素驗證 2FA,如何用 Python 實現(xiàn)?

開發(fā) 前端
動態(tài)碼最常見的實現(xiàn)算法就是 One-Time Password(OTP),是基于時間的一次性密碼,它是公認(rèn)的可靠解決方案,已經(jīng)寫入國際標(biāo)準(zhǔn) RFC6238。比如我們最常用的 Google Authenticator,就是 OTP。

傳統(tǒng)的用戶名密碼方式,容易泄漏,并不安全。

你說,加上短信驗證碼不就安全了,其實短信驗證碼也是不安全的,容易被攔截和偽造,SIM 卡也可以克隆,已經(jīng)有案例,先偽造身份證,再申請一模一樣的手機號碼,把錢轉(zhuǎn)走。

因此就有了 Two-factor authentication,簡稱 2FA,也就是雙因素驗證。最常見的就是用戶名密碼,再加一個動態(tài)碼。動態(tài)碼通常由隨身攜帶的移動設(shè)備上生成,比如 U 盾、手機。

動態(tài)碼最常見的實現(xiàn)算法就是 One-Time Password(OTP),是基于時間的一次性密碼,它是公認(rèn)的可靠解決方案,已經(jīng)寫入國際標(biāo)準(zhǔn) RFC6238。比如我們最常用的 Google Authenticator,就是 OTP。

那么,知道了 2FA,接下來應(yīng)該考慮的事,就是如何讓你用 Python 寫的網(wǎng)站實現(xiàn) 2FA。

輪子其實已經(jīng)有了,那就是 PyOTP,結(jié)合自己的理解,分享一下它的用法。

1.安裝

pip 安裝,不多說。

pip install pyotp

2.配對

配對就是移動設(shè)備和我們的 web 服務(wù)器配對。

首先,在服務(wù)器上使用如下代碼生成一次性密鑰:

>>> import pyotp
>>> pyotp.random_base32()
'BZ4TOJD4JWWJWPQBKP23FA55EMHA25Y2'
>>>

然后將這個密鑰以二維碼的形式讓手機(移動設(shè)備)掃描,掃描之后,手機上的應(yīng)用就保存了這個密鑰。

3.驗證

接下來,在手機上就可以使用下面這段邏輯產(chǎn)生動態(tài)密碼了。

>>> totp = pyotp.TOTP('BZ4TOJD4JWWJWPQBKP23FA55EMHA25Y2')
>>> totp.now()
'941782'
>>>

現(xiàn)在,你有 30 秒的時間將這個 6 位數(shù)密碼提交到服務(wù)器(輸入到網(wǎng)頁上),服務(wù)器服務(wù)器也使用同樣的密鑰和當(dāng)前時間戳,生成一個動態(tài)碼,跟用戶提交的動態(tài)碼比對。只要兩者不一致,就驗證失敗,也就是下面這段邏輯,如果超過 30 秒,(當(dāng)然,30 秒可以自定義),也會失效:

>>> totp = pyotp.TOTP('BZ4TOJD4JWWJWPQBKP23FA55EMHA25Y2')
>>> totp.verify('941782')
True
>>> time.sleep(30)
>>> totp.verify('941782')
False

除了使用基于時間的動態(tài)密碼,也可以用基于計數(shù)的動態(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.那是不是手機上還有開發(fā)個 app ?

不用,我們直接使用現(xiàn)成的 Google Authenticator 就可以了。

如果你已安裝了 Google Authenticator,請點擊 ? 添加密鑰,然后掃描下發(fā)的二維碼,就可以生成動態(tài)碼:

圖片

然后你可以執(zhí)行下面這段代碼,就可以發(fā)現(xiàn) pyotp 產(chǎn)生的動態(tài)碼和 Google Authenticator 產(chǎn)生的是一致的:

import pyotp
totp = pyotp.TOTP("JBSWY3DPEHPK3PXP")
print("Current OTP:", totp.now())

其實二維碼的信息就是 JBSWY3DPEHPK3PXP。

這樣,我們用 Google Authenticator 來產(chǎn)生動態(tài)密碼,網(wǎng)站上進行二次驗證,就可以實現(xiàn) 2FA 了。

責(zé)任編輯:武曉燕 來源: Python七號
相關(guān)推薦

2022-07-26 23:45:29

Windows系統(tǒng)蘋果

2024-02-19 15:42:29

2023-12-21 17:48:59

2023-02-10 13:17:30

微軟Windows 11

2022-08-01 00:08:03

雙因素認(rèn)證2FA

2023-02-20 15:39:55

2013-03-15 14:47:13

YubiKeyUSB密鑰雙因素驗證

2021-07-26 05:51:50

雙因素身份驗證安全密鑰驗證碼

2021-12-30 21:31:58

釣魚工具包網(wǎng)絡(luò)犯罪身份驗證

2023-07-05 00:38:21

2022-08-12 12:02:43

網(wǎng)絡(luò)釣魚2FA

2022-05-07 13:19:24

GitHub2FA

2022-05-06 10:16:11

GitHub雙因素身份驗證軟件開發(fā)

2013-06-18 09:54:37

微軟Windows Azu

2021-07-27 05:49:04

雙因素驗證MFA網(wǎng)絡(luò)安全

2022-03-14 13:53:01

基于風(fēng)險的身份驗證RBA身份驗證

2020-05-25 07:00:00

雙因素認(rèn)證身份認(rèn)證密碼

2021-09-15 18:36:08

雙因素認(rèn)證2FA身份驗證

2013-06-28 10:54:08

2023-01-04 00:09:31

點贊
收藏

51CTO技術(shù)棧公眾號

主站蜘蛛池模板: 成人在线精品视频 | 午夜免费观看体验区 | 欧美视频一区 | 在线观看a视频 | 国产成人免费 | 亚洲国产视频一区 | 精品二| 精品国产三级 | 久久er精品 | 男人久久天堂 | 97国产在线观看 | 亚洲综合色网 | 日韩欧美一区二区三区 | 久久久久久国模大尺度人体 | 青青草这里只有精品 | 日日操av| 9久9久| 成人在线一区二区 | 日韩成人在线免费观看 | 欧美一区二区在线观看 | 日日夜夜免费精品 | 亚洲国产aⅴ成人精品无吗 欧美激情欧美激情在线五月 | 欧美精品一区免费 | 五月激情六月婷婷 | 国产精品久久久久久久久图文区 | 亚洲精彩视频 | 日韩二三区 | 一级毛片在线播放 | 福利视频一区 | 一区二区三区在线免费看 | 久久精品国产一区二区三区 | 99精品欧美一区二区三区综合在线 | 国产成人在线视频免费观看 | 国产永久免费 | 一区二区亚洲 | 亚洲一区二区三区四区五区中文 | 日日噜噜夜夜爽爽狠狠 | 精品亚洲一区二区三区 | av中文字幕网 | 精品一区二区三区不卡 | 日韩五月天 |