php实现动态口令认证(谷歌身份验证器)

本文介绍了谷歌身份验证器GoogleAuthenticator在提升账户安全中的应用,包括如何生成安全密钥、使用手机扫描二维码获取动态口令,以及在PHP代码中的具体实现和使用方法,涉及登录验证和二次认证过程。
  1. 谷歌身份验证器Google Authenticator是谷歌推出的一款动态口令工具,解决大家各平台账户遭到恶意攻击的问题,一般在相关的服务平台登陆中除了用正常用户名和密码外,需要再输入一次谷歌认证器生成的动态口令才能验证成功,相当于输入二次密码,以达到账户的高安全性。
  2. 例如交易所、金融平台、以及一些钱包等项目等等,都会使用谷歌身份验证器Google Authenticator来做二次认证,开启谷歌身份验证之后,登录账户,除了输入用户名和密码,还需要输入谷歌验证器上的动态密码。谷歌验证器上的动态密码,也称为一次性密码,密码按照时间或使用次数不断动态变化(默认 30 秒变更一次)
  3. 代码参考:https://github.com/PHPGangsta/GoogleAuthenticator
  4. 关键代码:
<?php
// https://github.com/PHPGangsta/GoogleAuthenticator
error_reporting(0);// 关闭错误报告
session_start(); // 启动session  
require_once 'PHPGangsta/GoogleAuthenticator.php';
$ga = new PHPGangsta_GoogleAuthenticator();
// $secret = $ga->createSecret();
// 自定义安全密钥
$secret = "62H6TMAXQTZBVTRB";
// 手机端扫描二维码获取动态口令
$qrCodeUrl = $ga->getQRCodeGoogleUrl('username', $secret);
echo "二维码地址: ".$qrCodeUrl."\n\n";
// 输出动态口令
$oneCode = $ga->getCode($secret);
echo "本次登录的动态口令:'$oneCode'\n";
// 动态口令认证
$checkResult = $ga->verifyCode($secret, $password,2);    // 2 = 2*30sec clock tolerance
if ($checkResult) {
   
   
    $_SESSION['username'] = $username;
    echo "<h1>登录成功!</h1>";
    header("Refresh: 5; url=main.php");
    exit;
} else {
   
   
    echo "<h1>登录失败!</h1>";
    header("Refresh: 3; url=login.html");
    exit;
}
?>
  • 使用方法:
  1. 手机端安装 Microsoft Authenticator
  2. 下载地址:https://www.microsoft.com/en-us/security/mobile-authenticator-app
  3. 将以上代码生成的二维码地址在浏览器中访问
  4. 手机端扫描二维码获取动态验证码
  • 代码示例:
  • login.html
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>系统运维管理平台</title>
    <link rel="stylesheet" type="text/css" href="login.css"/>
</head>
<body>
    <div id="login"
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值