• warn.jp
    邮箱验证
    ID email_verify版本 1.0.0插件制作者 warn.jp免费338 行 / 17.3 KBHook / 路由 / 后台页
    新用户注册后需要通过邮件链接验证邮箱,可限制未验证用户发帖和回帖。
    app/plugins/email_verify/plugin.php
    开发日志已有 1 条

    个人独立维护项目。

    • warn.jp
      warn.jp
      版本 1.0.0 bff925ab54b5 更新:旧格式迁移:已将插件代码转存到开发日志,主题正文改为基础介绍。release
    主楼
  • 质量报告

    插件质量报告

    插件:email_verify

    Hook功能范围循环使用频率文件读写修改系统表读写系统表读写自己的表
    page.header全站页面页头否5----
    user.can_speak发帖权限检查否4----
    profile.after_form个人资料编辑表单否3----
    user.after_save用户注册/资料保存后否3----
    admin.tabs后台管理页标签栏否1----

    颜色说明:黄色表示有数据读写,红色表示 Hook 在系统循环中执行,浅蓝色表示有文件写入。“列表跳过”表示回调在列表路径会提前返回,“回调内”表示操作位于回调自身或其帮助函数的循环体内。“文件批处理”表示逐个处理用户一次提交的文件,属于必要操作,不标记修正。只有操作实际处于需要优化的循环路径时,才会标记“修正❗️”。

    数据字典

    未检测到插件数据表声明。

    #1
  • warn.jp

    mail() 依赖系统里的 sendmail 接口,不依赖 smtp 发信,仅适用于本机已经配置 mta 的情况。如果使用 docker 部署 bbs1org 程序则不适用。

    #2
  • 350

    🔍 插件审查报告(对照《AI 开发规则》与开发者文档)

    🔒 安全问题

    未发现明显问题。验证令牌 64 位随机、仅存 SHA-256 哈希,查询参数化;$to/$from 经 FILTER_VALIDATE_EMAIL 校验,主题去掉 CR/LF、正文 base64 编码,无邮件头注入;重发路由 require_post()+need_login() 且带 CSRF。

    ⚡ 性能问题

    未发现明显问题。验证状态用请求级静态缓存,user.can_speak/page.header 均非红区钩子,单请求仅一次按需查询。

    🐛 功能/规范缺陷

    1. CSS 中 border-radius:8px(plugin.php:307)与 border-radius:6px(plugin.php:311)写死数值,建议改用 var(--radius) 派生变量。

    ✅ 修复优先级

    仅一处 CSS 圆角变量,低优先级。

    #3
  • demius

    后台直接增加SMTP配置就方便多了

    #4
  • one

    让作者加成原生。

    #5
  • 399

    🔍 插件审查报告(AI 自动审查,对照《AI 开发规则》与开发者文档;本插件未被 8/18 楼上 350 的报告覆盖,属独立首次审查)

    插件:email_verify v1.0.0

    🔒 安全问题
    未发现明显问题。验证 token 为 64 位十六进制随机值,校验时以哈希比对存储,验证成功后立即清空 token_hash 并置零过期时间,防止重放;重发验证邮件有 60 秒冷却限制。

    ⚡ 性能问题
    未发现问题。

    🐛 功能/规范缺陷
    验证路由走 GET 执行数据库写入:email_verify_route()(plugin.php 约215-226行)通过 GET 请求读取邮件中的验证链接 token,校验通过后执行 UPDATE 写入验证状态。规则字面要求"修改状态的操作只接受 POST",此处形式上不符合;但这是邮箱验证链接的行业通用模式(用户从邮件客户端点击链接,天然是 GET 请求),且有强随机 token 与一次性失效机制防护,实际风险很低,建议视为该场景下的合理例外,无需强制改造。

    ✅ 修复优先级
    无需修复,仅作规范记录;如需完全符合规则字面要求,可考虑验证链接落地到一个确认页(GET 展示确认按钮),再由用户点击后以 POST 提交真正的验证请求,但需权衡是否值得为此增加一次额外交互。

    #6
  • warn.jp

    旧格式迁移:已将插件代码转存到开发日志,主题正文改为基础介绍。

    #7

发表回复

登录后回复