通过实施 2FA 增强 Web 应用程序的安全性
基于密码的身份验证已经不够了。网络犯罪分子可以通过多种方式获取人们的密码:网络钓鱼、暴力破解和键盘记录器只是其中的几个例子。为了解决这个问题,双因素身份验证 ( 2FA ) 允许您防止恶意行为者在未经您批准的情况下获得访问权限。
在本教程中,我将向您展示什么是双因素身份验证、它的工作原理以及如何在 Flask Web 应用程序中使用它。我将特别关注用于生成安全代码的 TOTP 算法。
什么是双因素身份验证
当您登录电子邮件帐户时,您需要提供您的电子邮件地址和密码。如果一切正确,您就可以访问您的帐户。这种身份验证方法称为单因素身份验证,或1FA。您需要的唯一信息(或因素)是密码。
双因素身份验证,或者一般来说多因素身份验证( MFA ),提供了额外的安全层:登录所需的因素越多,意味着网络犯罪分子的工作就越困难。一般来说,多因素身份验证机制作用于三种因素:
- 知识
- 拥有
- 固有
当我们考虑身份验证时,我们最习惯的是知识因素。事实上,它们处理只有合法用户知道的东西,例如 PIN 或密码。
拥有因素通常是 2FA 中使用的第二个因素,它们利用只有合法用户拥有的东西,例如智能手机、智能卡或安全令牌。
最后,固有因素与只有合法用户才能拥有的东西有关。这些是高级身份验证因素,需要先进的技术才能发挥作用,例如面部识别、指纹或视网膜识别。
在本教程中,我们将使用智能手机作为第二个身份验证因素来实施 2FA。特别是,我们将使用Google Authenticator或Microsoft Authenticator等应用程序来生成临时安全代码,也称为一次性密码代码 ( OTP )。
安全代码是如何生成的
在开始编码部分之前,我认为有必要了解身份验证器应用程序如何生成安全代码,至少从高层的角度来看是这样。
在本教程中,我们将处理基于时间的一次性密码( TOTP ) 生成。顾名思义,TOTP 使用当前时间与共享密钥相结合来生成密码。共享秘密通常是服务器生成的一串随机字节,仅在服务器和用户之间共享。此共享秘密允许用户生成一次性密码,并允许服务器验证它们是否正确。通常,为了便于使用,一次性密码会转换为 6 位数字,并且会在 30 秒后过期。
现在,无需进一步讨论,让我们看看这个小项目会是什么样子。
最后结果
单击“登录”按钮后,您将被重定向到此页面:
然后,在您第一次设置 2FA 后,它会要求您输入 OTP 代码进行验证。
为了了解登录过程,下面是一个逻辑图:
了解如何构建它的教程
https://lorenzobn.github.io/how-to-implement-two-factor-authentication-web-application
文章评论