IT技术博客大学习 共学习 共进步

Typecho 多用户二次认证插件

两双筷子 2026-06-03 09:03:23 累计浏览 2 次
本机暂存

前言

出于网站安全性的考虑,想在 Typecho 管理后台登录时加一个基于 OTP 的多因素认证功能,网上找了半天没有合适的扩展,唯一找到的一个扩展还不支持多用户,于是就自己写了一个。

  • 依赖要求:Typecho 1.2.0+
  • 特点:界面简洁、支持多用户

更新记录

2024-02-01

  • 解决所有表单都添加 otp 输入框的bug

2024-01-24

  • 修复 PHP 8.2 + 语法不兼容的错误提示 Deprecated: Using ${var} in strings is deprecated, use {$var}
  • 调整 OTP 动态码 input 框的挂载方式,尽量兼容更多后台模板

使用说明

插件开启后,在登录页面会多一个动态码输入框,需要输入账户密码时同时输入OTP 动态码(令牌)进行校验,校验失败时会提示相应错误信息。

2023-11-29T13:16:28.webp

绑定 OTP 密钥

在个人设置页面,使用身份验证器扫码或手动绑定,扫描后输入六位动态码进行验证。
绑定成功后密钥固定不再变化,未绑定时每次加载个人页面随机生成密钥(若怀疑密钥已泄露不安全,则解绑后重新绑定即可)。

2023-11-29T13:20:57.webp

otpauth 信息中包含站点名称、当前用户名称,扫码添加后效果如下:

2023-11-29T13:55:12.webp

解绑 OTP 认证

绑定成功后再进入个人设置页面,可以校验六位验证码,可以进行解绑操作。
2023-11-29T13:26:13.webp

登录认证

插件开启后,后台登陆页面会增加一个动态码输入框,已绑定的后台用户在登陆时需要校验 OTP 动态码,未绑定的用户则不会校验,为空正常登录即可。

2023-11-29T13:28:09.webp

插件安装

去码云下载插件

  • 将压缩包中的文件夹Login2FA 上传至 typecho 插件目录 typecho/usr/plugins
  • 在插件管理页面启用插件 "Login2FA"

插件配置

第一个是 OTP 认证码的时间窗口期,主要用于解决客户端和服务器时间戳不一致的问题。
第二个为一个防呆设计,因为 Typecho 插件卸载后插件的所有数据都将删除,这就会导致所有人的 OTP 密钥全部丢失,即使重新开启插件也无法恢复,为了防止不小心点到禁用按钮,需要在设置页面改为确认卸载后才允许卸载插件。

2023-11-29T13:41:24.webp

建议继续学习

  1. CHAP、HMAC、HOTP、TOTP等等 (累计阅读 3,760)
  2. erlang学习手记 (累计阅读 3,602)
  3. ERLANG OTP源码分析 – gen_server (累计阅读 3,560)
  4. Riak Core说明 (累计阅读 2,601)
  5. ERLANG OTP源码分析 – gen_fsm (累计阅读 2,600)
  6. QQ安全我做主―手机令牌2.0设计分享 (累计阅读 2,200)
  7. ERLANG OTP源码分析 – sys (累计阅读 2,061)
  8. ERLANG OTP源码分析 – supervisor (累计阅读 1,960)
  9. Typecho HTML5预加载 (累计阅读 1,760)
  10. ERLANG OTP源码分析 – code_server (累计阅读 1,460)