这其实就是「两步验证」或者叫做「双因素验证」的一种实现方式,它这里第二步验证是靠手机短信来发送验证码的。而国外更多的网站/网络服务还会使用一种叫“身份验证器”或叫“虚拟 MFA”的二步验证方式,它是利用一种“随时间变化的验证码”来取代手机短信,不仅更安全,而且可离线使用,通用性也更强

//引用GoogleAuthenticator类

include ('Gangsta/GoogleAuthenticator.php');
$ga = new \PHPGangsta_GoogleAuthenticator();

 //这是生成的密钥,每个用户唯一一个,为用户保存起来用于验证
$secret = $ga->createSecret();

 //下面为生成二维码,内容是一个URI地址(otpauth://totp/账号?secret=密钥&issuer=标题)
$qrCodeUrl = $ga->getQRCodeGoogleUrl(userall("name"), $secret, 'HAS平台二步认证');
//验验证码是否于密钥匹配
$code = $_REQUEST["code"];//用户输入的验证码
    $secretu = "";//刚刚生成的唯一密钥
    if ($ga->verifyCode($secretu,$code,1)){//验证成功
        echo "0";
    }else{//验证失败
        echo "1";

    }

接入逻辑:
用户登录系统之后检查数据是否存在两步验证密钥,如果没有将生成的二维码显示在前台,引导用户使用"谷歌身份验证器" 扫码绑定,用户扫码绑定之后引导用户输入"谷歌身份验证器"显示六位数验证码,进行比对,如果比对成功,密钥保存到数据库中,下次可以在需要二步验证的时候读取密钥

点击下载GoogleAuthenticator类

扫描二维码,在手机上阅读!
Last modification:June 15th, 2021 at 10:04 am
请我喝一瓶农夫山泉嘛?