老程序员教你怎么给网站添加谷歌两步验证的功能

 时间:2024-10-11 23:28:58

由于现在的大量网站都要求用户注册才能使用完成的功能,而且很多用户都习惯使用相同的密码作为网站的账号登录密码,这样很容易给不法份子提供了机会。只要破解了某一个技术能力比较弱的网站,将其数据库拖库到本地,暴力破解密码就可以拿到明文的密码。然后写个脚本就可以到各大论坛网站上进行撞库登录。容易给用户带来极大的安全隐患。

工具/原料

微信小程序版二次验证器

准备工作,生成secretkey并添加到小程序二次验证器里面

1、首先我们需要使用php代码来生成一个secretkey。这个key是由大小写组成32位的随机字符串。<?php function generateRandomClue($l髫潋啜缅ength = 32) { $b32 = "234567QWERTYUIOPASDFGHJKLZXCVBNM"; $s = ""; for ($i = 0; $i < $length; $i++){ $s .= $b32[rand(0,31)]; } return $s; } echo generateRandomClue()."\n";?>上面是使用php编写来用生成生成32位key的代码,我们将下面代码保存到为get-secretkey.php作者的这个脚本保存的完整路径是/Users/wuciyou/WebSite/web/loc/php-totp-demo/get-secretkey.php用户可以保存在任何方便你找到的目录下。然后通过php命令执行get-secretkey.php代码phpget-secretkey.php最后我们就会得到一个32位随机字符串GEZDGNBVGY3TQOJQGEZDGNBVGY3TQOJQ,如下图所示

老程序员教你怎么给网站添加谷歌两步验证的功能
老程序员教你怎么给网站添加谷歌两步验证的功能

2、将拿到32位的secretkey字符串添加到实现了TOTP算法的应用程序里面。市场上有很多类型的二次验证的app。在这里我们推荐大家使用微信小程序版的验证器。一、因为现在每个人手机上都安装了微信。二、省去了大家下载的时间,还能节省手机内存。步骤打开微信》点击底部发现》小程序》在小程序页面上方点击搜索框然后输入二次验证器如下图所示

老程序员教你怎么给网站添加谷歌两步验证的功能

3、打开小程序需要我们创建一个手势密码。该密码将会用来加密我们后期添加的secretkey数据。该小程序最大的靓点就在于用户可以使用不同的手势进入到不同的场景里面方便管理我们不同的场景下的网站登录

老程序员教你怎么给网站添加谷歌两步验证的功能

4、创建好手势后,进入到小程序里面的时候,是一个空白页面,因为我们还没有添加任何的secretkey到小程序里面。点击页面下的添加按钮,然后选择手动添加

老程序员教你怎么给网站添加谷歌两步验证的功能

5、添加页面比较简洁,只需要我们填写两个数据1. 账号账号是用户可以任意填写编辑的,这个主要是为了让用户记忆多个网站下不同的账号名。其实就是类似备注信息建议"用户名@网址"的形式。例如"[email protected]"2. key这里就需要填写我们在第一步时使用get-secretkey.php脚本生成的secretkey字符串"GEZDGNBVGY3TQOJQGEZDGNBVGY3TQOJQ"需要注意:这个key应该是系统自动给用户生成的,应保证系统内的secretkey是唯一,避免出现重复的情况。同时secretkey应仅向用户展示一次,并提示用户做好保存,备注。如果secretkey丢失了,会很麻烦

老程序员教你怎么给网站添加谷歌两步验证的功能

6、添加成功后,小程序就会每隔30s刷新一次这个动态口令。以后用户每次登录网站的时候,只需要打开小程序拿到最新的动态口令,然后输入在登录的表单里。就可以完成登录操作了

老程序员教你怎么给网站添加谷歌两步验证的功能

登录表单验证

1、上面的前期准备工作但诌诎箬已经完成,接下来我开启编写登录页面的html代码<!DOCTYPE htm造婷用痃l><html><head> <title>登录管理后台</title> <meta charset="utf-8"> <style type="text/css"> body{ background: url(img/bg.jpg) 50% no-repeat fixed; position: relative; height: 100vh; width:100vw; background-size: cover; } .form-box{ text-align: center; margin-top:300px; } .form-inner{ background-color: white; display: inline-block; padding:30px; text-align: right; box-shadow: 0 2px 12px 0 rgba(0, 0, 0, 0.1) } .input-item,.button-item{ margin-top:20px; } input{ font-size:20px; } .button-item{ margin-top:20px; text-align: center; font-size: 20px; } </style></head><body><div class="form-box"> <form class="form-inner"> <div class="input-item"> 账号:<input type="text" name="username"> </div> <div class="input-item"> 密码:<input type="text" name="password"> </div> <div class="input-item"> 动态码:<input type="text" name="code"> </div> <div class="button-item"> <input type="button" id="login-btn" value="登录"> </div> </form></div><script type="text/javascript" src="js/jquery-3.4.1.min.js"></script><script type="text/javascript"> $(document).ready(function(){ $('#login-btn').click(function(e){ const data = { username:$('input[name="username"]').val(), password:$('input[name="password"]').val(), code:$('input[name="code"]').val(), } $.post('./check.php',data).then((result)=>{ console.info('hello',result) switch(result.code){ case 'success': alert('登录成功'); break; case 'error': alert(result.msg); } }) }) })</script></body></html>创建登录表单index.html

老程序员教你怎么给网站添加谷歌两步验证的功能

2、然后创建登录验证check.php<?php header('Content-Type:applicaion/js泠贾高框on'); require_once(dirname(__FILE__).'/rfc6238/rfc6238.php'); const username = 'admin'; const password = 'admin123'; // 这个32位的随机secretkey是在第一步由系统提前生成。并告知用户,建议只给用户展示一次 // 系统应保证每个用户的key都是唯一的 const secretkey = 'GEZDGNBVGY3TQOJQGEZDGNBVGY3TQOJQ'; if(!(isset($_POST['username']) && $_POST['username'] == username)){ echo json_encode(['code' => 'error','msg' => '账号错误']); return ; } if(!(isset($_POST['password']) && $_POST['password'] == password)){ echo json_encode(['code' => 'error','msg' => '密码错误']); return ; } if (TokenAuth6238::verify(secretkey,$_POST['code'])) { echo json_encode(['code' => 'success','msg' => '登录成功']); return ; } else { echo json_encode(['code' => 'error','msg' => '动态口令验证失败']); return ; } ?>

老程序员教你怎么给网站添加谷歌两步验证的功能

3、最后将代码放放在web根目录。然后在浏览器里面打开http://localhost/php-totp-demo就可以看到效果了。

老程序员教你怎么给网站添加谷歌两步验证的功能
  • switch怎么格式化
  • switch怎么看型号
  • switch激活日期查询
  • ns怎么跳过游戏更新
  • 热门搜索
    缅怀先烈手抄报大全 健康小常识手抄报内容 清明节手抄报一年级 安全手抄报版面设计 核心价值观手抄报内容 读书名言手抄报 小学四年级手抄报 中秋手抄报内容 手抄报图片素材 母亲节手抄报图片