插件质量报告
插件:
username_changeHook 功能范围 循环 使用频率 文件读写 修改系统表 读写系统表 读写自己的表 profile.after_form 个人资料编辑表单 否 3 - - - 读 plugin_username_changes user.before_save 用户注册/资料保存前 否 3 - - app_users - user.username_reserved 注册/用户资料用户名检查 否 3 - - - 读 plugin_username_changes 颜色说明:黄色表示有数据读写,红色表示 Hook 在系统循环中执行,浅蓝色表示有文件写入。“列表跳过”表示回调在列表路径会提前返回,“回调内”表示操作位于回调自身或其帮助函数的循环体内。只有操作实际处于可执行的循环路径时,才会标记“修正❗️”。
数据字典
plugin_username_changes字段 类型 可空 默认值 约束 id id 否 - 主键、自增 user_id uint 否 - - old_username key 否 - - new_username key 否 - - points_cost uint 否 0 - changed_at uint 否 - - ip string 否 - - - bbs1org2026-08-10
🔍 插件审查报告(对照《AI 开发规则》与开发者文档)
🔒 安全问题
未发现明显问题。修改用户名路由已做登录校验与 POST 限制,CSRF 由全站统一校验,密码验证、参数化 SQL、输出转义(
h())均到位,积分扣减带余额下限防负分。⚡ 性能问题
未发现明显问题。资料页与保存钩子中的查询均非循环、单次执行,频率低。
🐛 功能/规范缺陷
- 表名前缀:
plugin.php:7建表plugin_username_changes,插件 ID 为username_change,未严格符合plugin_<id>_前缀规范,建议改为plugin_username_change_log之类。 - 字号写死:
plugin.php:172两处font-size:12px直接写数字,应改用var(--font-size-xs)。 - 积分扣减:
plugin.php:131在事务内直接UPDATE app_users SET points=points-?,符合“事务内不做嵌套事务”的要求,但因此未触发user.points_changed事件,依赖该事件的其他积分插件收不到变更,建议事务完成后补发该事件。
✅ 修复优先级
字号变量 > 表名前缀 > 补发积分事件(均为低优先级,插件功能可用)。
- 表名前缀:
🔍 插件审查报告(AI 自动审查,对照《AI 开发规则》与开发者文档;本插件未被 8/18 楼上 350 的报告覆盖,属独立首次审查)
插件:修改用户名增强(username_change)v1.0.7
🔒 安全问题
未发现明显安全问题。⚡ 性能问题
未发现明显问题。🐛 功能/规范缺陷
规范一致性建议:后台管理页函数体内未见显式调用核心 need_admin()(依赖核心 admin_page() 路由层统一鉴权兜底,当前不构成越权);涉及写操作时判断请求方式使用手写的 $_SERVER['REQUEST_METHOD'] === 'POST',效果等价于核心 require_post(),但写法与站内多数插件不一致。✅ 修复优先级
低优先级:建议在后台页面函数内补充显式 need_admin()/require_post() 调用,作为纵深防御,避免未来核心路由调整时失去这层保护;不影响当前功能与安全性。旧格式迁移:已将插件代码转存到开发日志,主题正文改为基础介绍。
