多因素认证(MFA),是一种计算机访问控制的方法,用户要通过两种以上的认证机制之后,才能得到授权,使用计算机资源。MFA的目的是建立一个多层次的防御,使未经授权的人访问计算机系统或网络更加困难,从而提高安全性。
0、请不要问“在不在”之类的问题,有问题直接问!1、学生或暂时没有工作的童鞋,整站资源免费下载!2、¥9.9充值终身VIP会员,加我微信,826096331 拉你进VIP群学习!3、程序员加油,技术改变世界。 在线 充值
最常见的应用场景是网上银行汇款,身份验证后还需要额外的短信验证码或者类似UKEY口令码才能最终完成汇款操作。多因素验证目前市面上有基于硬件和基于软件的产品,硬件产品类似于U盘,不过现在很多企业用户都使用基于软件APP形式的产品。今天我给大家介绍一款开源的二次认证系统Google Authenticator,结合我们的常见的用户登录模块,完成一个简单的二次双因素认证。Google Authenticato可以利用智能手机生产30秒动态口令,该验证器提供了一个六位数的一次性密码。目前ios 和Android 都有客户端供于下载。大家可以到Apple Store和安卓应用平台搜Eagle 2FA进行安装。 Google Authenticator双因素验证相比于传统的短信验证,具有以下优点: 开源免费; 避免无法接收验证短信的痛苦; 无网络环境下也可用,手机欠费停机不受影响。 我们使用基于PHP的Google Authenticator组件,提供了生成密钥、生成口令码、验证口令码以及生成用于快速扫描的二维码等功能。 安装 我们使用composer安装:
composer require "phpgangsta/googleauthenticator:dev-master"
使用 生成密钥:
$ga = new PHPGangsta_GoogleAuthenticator();
$secret = $ga->createSecret();
echo $secret;
运行后会生成一个随机密钥:OQB6ZZGYHCPSX4AK,这个密钥应该保存在数据库里和用户信息对应,即每个用户对应一个密钥。 验证口令码: 当用户提交口令码后,需要验证口令码是否正确,可以使用以下代码:
$oneCode = $_POST['code'];
$checkResult = $ga->verifyCode($secret, $oneCode, 2); // 2 = 2 * 30秒时钟容差
if ($checkResult) {
echo '匹配! OK';
} else {
echo '不匹配! FAILED';
}
实际应用 典型的用户登录双因素认证流程: 1.用户输入用户名密码提交。 2.后台验证用户是否合法,如果用户名密码都正确,则进入下一步二次认证。 3.打开手机端APP, 找到对应生成的一次性口令码,按要求输入口令码。 4.提交口令码,后台验证,如果正确则完成验证。 具体代码请参照demo演示和下载源码。 手机端APP截图: 我们还可以做的更安全,限制验证次数,抵御暴力攻击。比如我们可以限制5分钟内最多5次口令码验证尝试,以提高系统安全性。
友情提示:垃圾评论一律封号 加我微信:826096331拉你进VIP群学习群