登录安全(验证码·防爆破·老客户免验证)

¥16.80
无货
前台登录/注册页五道防线,全部自建实现:不接 reCAPTCHA/hCaptcha,不改官方任何文件。①动态图形验证码(GD 绘制、字符旋转错位、整图波浪扭曲、点图刷新,题型可切字符/算术);②蜜罐+提交速度检测(机器人直 POST 判负);③失败次数锁定(同 IP+账号连错 N 次锁 M 分钟,前台+后台共用计数);④老客户免验证(同一浏览器累计登录满 3 次,登录页自动不再出验证码,失败一次即清零,注册页永远显示,可一键关掉回到全部显示调试);⑤注册邮箱验证码(6 位码、60 秒重发间隔、同邮箱/同 IP 限额、一码一用,邮件未配置自动跳过不卡注册)。20 语种,装完即生效。
加入收藏

> InnoShop CE 插件。前台登录/注册页防机器人 + 防暴力破解,全部自建实现:不接 Google reCAPTCHA、不接 hCaptcha、不接任何第三方验证码服务,也不改官方任何文件。

一句话

防线拦什么在哪
动态图形验证码挡脚本批量提交:波浪扭曲字符图,点图可换一张前台登录页 / 注册页
蜜罐 + 速度检测挡不看页面直 POST 的机器人:隐藏输入框 + 提交过快判负前台登录页 / 注册页
失败次数锁定挡密码爆破:同 IP+账号连续错 N 次锁 M 分钟前台登录 / 注册 + 后台登录
老客户免验证不给回头客添堵:同一浏览器登录满 3 次,登录页不再出验证码自动,无需配置
注册邮箱验证码挡一次性邮箱乱注册:邮箱收 6 位码才能提交注册页邮箱框后

一、怎么用(装完即生效)

  1. 后台安装启用插件 → 一切默认开着,前台立刻就有验证码和蜜罐。
  2. 想调的都在 后台 → 应用 → 登录安全 → 设置:验证码开关(登录页/注册页独立)、题型(默认抄 4 位字符,可切算术题)、老客户免验证、邮箱验证码、锁定次数与时长。
  3. 邮箱验证码要在「系统设置 → 邮件设置」里先配好发信引擎(SMTP 等);没配好时注册页自动跳过邮箱验证,不会把客户卡死。

二、配置页每个开关是干什么的

开关默认作用什么时候改
登录页验证码开前台登录页显示图形验证码想彻底关掉时
注册页验证码开前台注册页显示图形验证码同上
算术题模式关验证码从「抄 4 位字符」换成两位数加减算式客户群心算无压力、想换口味时
老客户免验证开同一浏览器累计登录满 N 次,登录页免验证码;关掉=所有人都显示(调试用)调试外观时关
成为老客户所需登录次数3达到该次数免验证;登录失败一次即清零重新累计想让客户登录 1 次就免验证 → 改 1
免验证有效期(天)180超过该天数没登录成功,资格作废重新累计;设备 cookie 寿命自动跟随此值想更严格 → 改小
注册页邮箱验证码开注册需先收 6 位邮箱验证码(60 秒重发倒计时)不想启用时关
验证码有效分钟10邮箱验证码有效期(3–60 分钟),一码一用、错 5 次作废一般不用动
蜜罐 + 速度检测开隐藏输入框 + 提交快于 1.2 秒判机器人一般不用动
失败锁定次数 / 分钟5 / 15同 IP+账号连续失败 N 次锁 M 分钟爆破猖獗时调严

三、老客户免验证的机制(它凭什么认定「不是机器人」)

  • 每次前台登录成功,给浏览器发一枚隐形设备 cookie(HttpOnly,寿命跟随免验证有效期),服务器只记 cookie 哈希 + 累计成功次数;
  • 累计满设置次数(默认 3)→ 这台设备登录页不再出验证码;注册页永远出——陌生设备没有信任基础;
  • 该设备登录失败一次,信任立即清零重新累计:偷到 cookie 仍需正确密码,错一次就打回验证码;
  • 蜜罐、速度检测、失败锁定对老客户照常生效,免掉的只有验证码这一关;
  • 信任记录存站点文件(不进数据库、不进缓存),卸载插件删除即零残留。

四、实现边界(为什么它不碍事)

  • 不改官方任何文件:验证码行经官方钩子注入,校验走插件自己的中间件;停用/卸载即完全回到安装前。
  • 邮箱验证码同步直发、不走队列——官方队列默认没有 worker,走队列永远收不到信。
  • 发信参数直接用系统「邮件设置」,插件里不重复配置。
  • 验证码图 GD 本地绘制:有 TTF 字体时字符旋转、错位、整图波浪扭曲;没有字体也能用内置点阵字兜底,不挑服务器环境。
  • 支持 20 语种(ar de en es fr id it ja km ko ms nl pt-br pt-pt ru th tr vi zh-cn zh-hk),界面文案全跟随店铺语言。

功能清单

  • 前台登录页 / 注册页动态图形验证码(GD 绘制、点图刷新、题型可切字符/算术)
  • 蜜罐字段 + 提交速度检测(机器人直 POST 判负)
  • 失败次数锁定(前台登录/注册 + 后台登录共用计数,可配次数与时长)
  • 老客户免验证(设备信任:累计登录、失败清零、有效期可配、可整体关闭调试)
  • 注册页邮箱验证码(6 位码、60 秒重发间隔、同邮箱/同 IP 限额、一码一用、邮件通道未配置自动跳过)
  • 后台配置页全项可调,20 语种

兼容环境

  • InnoShop CE 0.9.x,PHP 8.1 及以上(需 GD 扩展,默认都有)
  • 邮箱验证码依赖「系统设置 → 邮件设置」里已配好的发信引擎;未配置时该功能自动停用,不影响其他防线
  • 只读官方数据表(customers 等),不修改官方任何文件;停用插件即完全回到安装前
  • 与其他自有插件零互相依赖

反馈与支持

遇到问题请发邮件至 jl@ecmai.cn(仅作者可见,不会公开显示)。

为便于快速定位,邮件里请附上:插件名称与版本号、InnoShop 版本、PHP 版本、问题现象与截图。