微信小程序版二次验证器
首先我们需要使用php代码来生成一个secretkey。这个key是由大小写组成32位的随机字符串。 上面是使用php编写来用生成生成32位key的代码,我们将下面代码保存到为get-secretkey.php作者的这个脚本保存的完整路径是 /Users/wuciyou/WebSite/web/loc/php-totp-demo/get-secretkey.php用户可以保存在任何方便你找到的目录下。然后通过php命令执行get-secretkey.php代码php get-secretkey.php 最后我们就会得到一个32位随机字符串GEZDGNBVGY3TQOJQGEZDGNBVGY3TQOJQ,如下图所示
将拿到32位的secretkey字符串添加到实现了TOTP算法的应用程序里面。市场上有很多类型的二次验证的app。在这里我们推荐大家使用微信小程序版的验证器。一、因为现在每个人手机上都安装了微信。二、省去了大家下载的时间,还能节省手机内存。步骤打开微信》点击底部发现》小程序》在小程序页面上方点击搜索框然后输入二次验证器如下图所示
打开小程序需要我们创建一个手势密码。该密码将会用来加密我们后期添加的secretkey数据。该小程序最大的靓点就在于用户可以使用不同的手势进入到不同的场景里面方便管理我们不同的场景下的网站登录
创建好手势后,进入到小程序里面的时候,是一个空白页面,因为我们还没有添加任何的secretkey到小程序里面。点击页面下的添加按钮,然后选择手动添加
添加页面比较简洁,只需要我们填写两个数据1. 账号 账号是用户可以任意填写编辑的,这个主要是为了让用户记忆多个网站下不同的账号名。其实就是类似备注信息建议'用户名@网址'的形式。例如'username@www.ithome.io'2. key这里就需要填写我们在第一步时使用get-secretkey.php脚本生成的secretkey字符串'GEZDGNBVGY3TQOJQGEZDGNBVGY3TQOJQ'需要注意:这个key应该是系统自动给用户生成的,应保证系统内的secretkey是唯一,避免出现重复的情况。同时secretkey应仅向用户展示一次,并提示用户做好保存,备注。如果secretkey丢失了,会很麻烦
添加成功后,小程序就会每隔30s刷新一次这个动态口令。以后用户每次登录网站的时候,只需要打开小程序拿到最新的动态口令,然后输入在登录的表单里。就可以完成登录操作了
上面的前期准备工作已经完成,接下来我开启编写登录页面的html代码
然后创建登录验证check.php '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 ; } ?>
最后将代码放放在web根目录。然后在浏览器里面打开http://localhost/php-totp-demo就可以看到效果了。
完整的源代码已经放在开源中国上了
https://gitee.com/wuciyou/php-totp-demo