[审计]FlintHub 插件在线审计工具 —— 规则集验收报告(一期 12 + 二期 8 + 方案 §8 补齐 4 = 24 条)

👑Lv.11 元老 🌞 骨干会员
2026-10-26 10:57:54

4 条)

date: 2026-10-18

category: 审计修复

source: WWW/待办事宜/FlintHub_插件在线审计工具_规则集验收报告.md


FlintHub 插件在线审计工具 —— 规则集验收报告(一期 12 + 二期 8 + 方案 §8 补齐 4 = 24 条)

本报告由 plugin-audit/cli/selftest.php 同源逻辑生成,所有数字来自真实运行,无手写。

项值
工具版本1.1.26
规则集mvp-3
判据基准核心1.1.26
规则条数24
自检夹具246 例 / 通过 246 / 失败 0
语料1373 个文件(60 个插件)
语料耗时13334 ms
语料命中88 条
停用规则无


一、规则清单与自检结果

编号等级规则规范夹具结果
FH-PKG-001CRITICAL包结构必须 plugins/<name>/ 单根(含 Plugin.php + plugin.json)§11.35 ①12PASS 12/12
FH-PKG-002CRITICAL插件目录名必须匹配 ^[a-z0-9_]{2,40}$§11.35 ③10PASS 10/10
FH-PKG-003CRITICAL包内路径安全(无 .. / 反斜杠 / 盘符 / 空字节 / 全角斜杠 / bidi 控制符)§11.35 ① / Updater::normalizePath()11PASS 11/11
FH-SYN-001CRITICAL包内 PHP 文件必须语法正确(子进程 token_get_all TOKEN_PARSE,带超时)§11.34 / 发布端门禁 #27PASS 7/7
FH-NS-001CRITICAL命名空间必须能被插件自动加载器解析(复刻 Autoloader 三条候选路径)§11.3415PASS 15/15
FH-INL-001MAJOR无内联 <script> / <style> 块(src 引用与 JSON-LD 数据岛豁免)§7.3-1 / §7.3-6 / §12.2-414PASS 14/14
FH-INL-002MAJOR无内联 on 事件属性(addEventListener + data- 传参)§7.3-2 / §12.2-412PASS 12/12
FH-I18N-001MAJOR三语字典键集合零差异 + 键序一致(token 硬解,不 include)§八10PASS 10/10
FH-USE-001MAJOR同命名空间下调用未 import 的 app 类(跑到那行才 Class not found)§12.1-611PASS 11/11
FH-SEC-001MAJOR红线函数(eval / unserialize / extract / assert / create_function / preg_replace+e)§一五10PASS 10/10
FH-SEC-002MAJOR写操作必须「先登录后 CSRF」(且 CSRF 不能晚于读参数)§11.2810PASS 10/10
FH-I18N-002MAJOR代码里字面量引用的语言键必须在字典里存在(缺键会显示裸键名)§八10PASS 10/10
FH-ENC-001MINOR文本文件编码:0 BOM / 0 CRLF / 全 UTF-8§11.5 / 发布端门禁 #310PASS 10/10
FH-ENC-002MINORPHP 变量名不得含非 ASCII 字节(全角标点会被吞进变量名)§11.5 / 全角标点10PASS 10/10
FH-ENC-003MINOR无调试残留(var_dump / print_r / console.log / debugger / [DBG])§11.5 / 发布端门禁 #49PASS 9/9
FH-INL-003MINOR无静态 style="" 属性(CSS 变量注入豁免)§7.3-3 / §7.3-4 / §7.3-514PASS 14/14
FH-META-001MINORplugin.json 必填字段完整 + hooks 指向真实存在的文件§三13PASS 13/13
FH-META-002MINORplugin.json 的 category 必须在核心 10 类内§三8PASS 8/8
FH-META-003MINORplugin.json 的 icon 必须在核心图标表内(否则渲染成问号)§6.4-47PASS 7/7
FH-META-004MINORhooks 声明的钩子名必须在核心钩子表内(写错就永不触发)§9.18PASS 8/8
FH-META-005MINOR版本号多处一致(plugin.json / 说明.md / Plugin.php / assets)§12.2-710PASS 10/10
FH-DB-001INFO插件直接查询核心表(跨层依赖,建议确认)§11.88PASS 8/8
FH-HOOK-001INFO钩子文件里出现 $this->(闭包作用域下不可用)§11.248PASS 8/8
FH-HOOK-002INFO钩子文件里声明顶层函数/类(重复 include 会 Cannot redeclare)§9.59PASS 9/9

二、语料回归(60 个插件 / 1373 个文件)

编号命中判定
FH-PKG-00122 条 → 全部为真阳性(逐条见下)
FH-PKG-0020零命中(无假阳性)
FH-PKG-0030零命中(无假阳性)
FH-SYN-0010零命中(无假阳性)
FH-NS-0010零命中(无假阳性)
FH-INL-00133 条 → 全部为真阳性(逐条见下)
FH-INL-00211 条 → 全部为真阳性(逐条见下)
FH-I18N-0010零命中(无假阳性)
FH-USE-0010零命中(无假阳性)
FH-SEC-0010零命中(无假阳性)
FH-SEC-0020零命中(无假阳性)
FH-I18N-0020零命中(无假阳性)
FH-ENC-0010零命中(无假阳性)
FH-ENC-0020零命中(无假阳性)
FH-ENC-0030零命中(无假阳性)
FH-INL-0030零命中(无假阳性)
FH-META-0010零命中(无假阳性)
FH-META-0020零命中(无假阳性)
FH-META-0030零命中(无假阳性)
FH-META-0040零命中(无假阳性)
FH-META-0054646 条 → 全部为真阳性(逐条见下)
FH-DB-0013636 条 → 全部为真阳性(逐条见下)
FH-HOOK-0010零命中(无假阳性)
FH-HOOK-0020零命中(无假阳性)

命中明细

1. [CRITICAL] FH-PKG-001 — plugins/plugins_cache.json:1

  • 症状:文件不在 plugins/<插件目录>/ 之下(包根多出来的文件)。投稿预检逐条 strpos($path, "plugins/<name>/") === 0,这一条会被判 err=bad_struct
  • 修法:plugins_cache.json 是核心运行时自动生成的缓存(含插件与钩子清单),绝不能进包。删掉它 —— 装好后系统会自己重建(或调用 Plugin::refresh())
  • 原文:plugins/plugins_cache.json

2. [CRITICAL] FH-PKG-001 — plugins/plugins_cache.json.bak.20260927052409:1

  • 症状:文件不在 plugins/<插件目录>/ 之下(包根多出来的文件)。投稿预检逐条 strpos($path, "plugins/<name>/") === 0,这一条会被判 err=bad_struct
  • 修法:plugins_cache.json 是核心运行时自动生成的缓存(含插件与钩子清单),绝不能进包。删掉它 —— 装好后系统会自己重建(或调用 Plugin::refresh())
  • 原文:plugins/plugins_cache.json.bak.20260927052409

3. [MAJOR] FH-INL-001 — plugins/forum_required_tag/hook/layout_head_end.php:37

  • 症状:用 <script> 承载数据的「数据岛」:<script type="application/json" id="frt-badge-map">。§7.3-6 明确要求改成 data-* 属性承载 JSON —— 这里的内容根本不参与执行,纯粹是被当成了数据容器;而且内联 <script> 在生产的 CSP 下会被拦(本机不设 CSP,测不出来)(这段 HTML 是 PHP 字符串拼出来的,不在视图文件里)
  • 修法:改成 data 属性承载:<div id="xxxData" hidden data-json='<?php echo htmlspecialchars(json_encode($data), ENT_QUOTES, 'UTF-8'); ?>'></div>,plugins/forum_required_tag/assets/script.js 启动时 JSON.parse(el.dataset.json) 读取(§7.3-6)
  • 原文:<script type="application/json" id="frt-badge-map">

4. [MAJOR] FH-INL-001 — plugins/icon_generator/views/generator.php:302

  • 症状:用 <script> 承载数据的「数据岛」:<script type="application/json" id="iconGenData">。§7.3-6 明确要求改成 data-* 属性承载 JSON —— 这里的内容根本不参与执行,纯粹是被当成了数据容器;而且内联 <script> 在生产的 CSP 下会被拦(本机不设 CSP,测不出来)
  • 修法:改成 data 属性承载:<div id="xxxData" hidden data-json='<?php echo htmlspecialchars(json_encode($data), ENT_QUOTES, 'UTF-8'); ?>'></div>,plugins/icon_generator/assets/script.js 启动时 JSON.parse(el.dataset.json) 读取(§7.3-6)
  • 原文:<script type="application/json" id="iconGenData">

5. [MAJOR] FH-INL-002 — plugins/lucky_draw/views/admin.php:100

  • 症状:内联事件属性 onsubmit="…"。本站 CSP 不含 unsafe-inline → 生产环境浏览器会拒绝执行(控制台:Refused to execute inline event handler),按钮/表单点了没反应;本机不设 CSP,所以测不出来
  • 修法:删掉 onsubmit,在 assets/script.js 里用 document.querySelectorAll('[data-xxx]').forEach(el => el.addEventListener('submit', …)) 绑定;需要传的数据放 data-* 属性(单条数据用 data-xxx='<?php echo htmlspecialchars(json_encode($row, JSON_HEX_TAG|JSON_HEX_AMP|JSON_HEX_APOS|JSON_HEX_QUOT), ENT_QUOTES, 'UTF-8'); ?>',JS 端 JSON.parse 读取)
  • 原文:onsubmit="…"

6. [MAJOR] FH-INL-001 — plugins/reply_reward/views/admin/index.php:243

  • 症状:内联 <script> 块:<script>。本站 CSP 的 script-src 不含 unsafe-inline → 生产环境浏览器会直接拦掉,本机(phpstudy 不设 CSP)却完全正常,属典型的「上线才炸」
  • 修法:把逻辑迁到 plugins/reply_reward/assets/script.js,页面只保留 <script src="<?php echo $bp; ?>/plugins/reply_reward/assets/script.js?v=<?php echo $ver; ?>"></script>。若需要从 PHP 传数据给 JS,用 data-* 属性承载 JSON(§7.3-6),script.js 里 JSON.parse 读取
  • 原文:<script>

7. [MINOR] FH-META-005 — plugins/adslot/说明.md:3

  • 症状:版本号与 plugin.json 不一致(基准 1.1.0):说明.md 版本行 = 1.0.0;Plugin.php @version = 1.0.0。这类不一致不会报错,但升级页按 plugin.json 提示有新版本、用户升级完看说明还是旧版本号,会以为没升成功
  • 修法:把上面各处的版本号统一成 1.1.0。§12.2-7 列出的完整清单是 12 处:plugin.json + 说明.md 版本行 + 8 个 PHP 文件头 @version + 2 个 assets(本规则只查其中「明确声明插件版本」的那几处,文件级 @version 不查)
  • 原文:> 版本:1.0.0 | 作者:FlintHub | 状态:✅ 已启用

8. [MINOR] FH-META-005 — plugins/ai_assistant/说明.md:3

  • 症状:版本号与 plugin.json 不一致(基准 1.1.0):说明.md 版本行 = 1.0.0;Plugin.php @version = 1.0.0。这类不一致不会报错,但升级页按 plugin.json 提示有新版本、用户升级完看说明还是旧版本号,会以为没升成功
  • 修法:把上面各处的版本号统一成 1.1.0。§12.2-7 列出的完整清单是 12 处:plugin.json + 说明.md 版本行 + 8 个 PHP 文件头 @version + 2 个 assets(本规则只查其中「明确声明插件版本」的那几处,文件级 @version 不查)
  • 原文:> 版本:1.0.0 | 适用:FlintHub 社区系统 | 日期:2026-08-26

9. [MINOR] FH-META-005 — plugins/bitiful_storage/Plugin.php:18

  • 症状:版本号与 plugin.json 不一致(基准 1.1.0):Plugin.php @version = 1.0.0。这类不一致不会报错,但升级页按 plugin.json 提示有新版本、用户升级完看说明还是旧版本号,会以为没升成功
  • 修法:把上面各处的版本号统一成 1.1.0。§12.2-7 列出的完整清单是 12 处:plugin.json + 说明.md 版本行 + 8 个 PHP 文件头 @version + 2 个 assets(本规则只查其中「明确声明插件版本」的那几处,文件级 @version 不查)
  • 原文:* @version 1.0.0

10. [MINOR] FH-META-005 — plugins/code_audit/Plugin.php:7

  • 症状:版本号与 plugin.json 不一致(基准 1.1.0):Plugin.php @version = 1.0.0。这类不一致不会报错,但升级页按 plugin.json 提示有新版本、用户升级完看说明还是旧版本号,会以为没升成功
  • 修法:把上面各处的版本号统一成 1.1.0。§12.2-7 列出的完整清单是 12 处:plugin.json + 说明.md 版本行 + 8 个 PHP 文件头 @version + 2 个 assets(本规则只查其中「明确声明插件版本」的那几处,文件级 @version 不查)
  • 原文:* @version 1.0.0

11. [MINOR] FH-META-005 — plugins/code_repo/Plugin.php:7

  • 症状:版本号与 plugin.json 不一致(基准 1.1.0):Plugin.php @version = 1.0.0。这类不一致不会报错,但升级页按 plugin.json 提示有新版本、用户升级完看说明还是旧版本号,会以为没升成功
  • 修法:把上面各处的版本号统一成 1.1.0。§12.2-7 列出的完整清单是 12 处:plugin.json + 说明.md 版本行 + 8 个 PHP 文件头 @version + 2 个 assets(本规则只查其中「明确声明插件版本」的那几处,文件级 @version 不查)
  • 原文:* @version 1.0.0

12. [MINOR] FH-META-005 — plugins/community_bank/说明.md:3

  • 症状:版本号与 plugin.json 不一致(基准 1.1.0):说明.md 版本行 = 1.0.0;Plugin.php @version = 1.0.0;assets/script.js 版本注释 = 1.0.0。这类不一致不会报错,但升级页按 plugin.json 提示有新版本、用户升级完看说明还是旧版本号,会以为没升成功
  • 修法:把上面各处的版本号统一成 1.1.0。§12.2-7 列出的完整清单是 12 处:plugin.json + 说明.md 版本行 + 8 个 PHP 文件头 @version + 2 个 assets(本规则只查其中「明确声明插件版本」的那几处,文件级 @version 不查)
  • 原文:> 版本:1.0.0 | 作者:FlintHub | 状态:✅ 已启用

13. [MINOR] FH-META-005 — plugins/content_review/说明.md:3

  • 症状:版本号与 plugin.json 不一致(基准 2.1.0):说明.md 版本行 = 2.0.0;Plugin.php @version = 1.0.0。这类不一致不会报错,但升级页按 plugin.json 提示有新版本、用户升级完看说明还是旧版本号,会以为没升成功
  • 修法:把上面各处的版本号统一成 2.1.0。§12.2-7 列出的完整清单是 12 处:plugin.json + 说明.md 版本行 + 8 个 PHP 文件头 @version + 2 个 assets(本规则只查其中「明确声明插件版本」的那几处,文件级 @version 不查)
  • 原文:> 版本:2.0.0 | 作者:SoSite | 状态:⏸️ 未启用(注册后需后台启用)

14. [MINOR] FH-META-005 — plugins/daily_checkin/说明.md:3

  • 症状:版本号与 plugin.json 不一致(基准 1.4.0):说明.md 版本行 = 1.3.0;Plugin.php @version = 1.1.0;assets/admin.css 版本注释 = 1.1.0。这类不一致不会报错,但升级页按 plugin.json 提示有新版本、用户升级完看说明还是旧版本号,会以为没升成功
  • 修法:把上面各处的版本号统一成 1.4.0。§12.2-7 列出的完整清单是 12 处:plugin.json + 说明.md 版本行 + 8 个 PHP 文件头 @version + 2 个 assets(本规则只查其中「明确声明插件版本」的那几处,文件级 @version 不查)
  • 原文:> 版本:1.3.0 | 作者:FlintHub | 状态:✅ 启用(ˋplugin.jsonˋ ˋactivated: trueˋ)

15. [MINOR] FH-META-005 — plugins/dice/说明.md:3

  • 症状:版本号与 plugin.json 不一致(基准 1.1.0):说明.md 版本行 = 1.0.0。这类不一致不会报错,但升级页按 plugin.json 提示有新版本、用户升级完看说明还是旧版本号,会以为没升成功
  • 修法:把上面各处的版本号统一成 1.1.0。§12.2-7 列出的完整清单是 12 处:plugin.json + 说明.md 版本行 + 8 个 PHP 文件头 @version + 2 个 assets(本规则只查其中「明确声明插件版本」的那几处,文件级 @version 不查)
  • 原文:> 版本:1.0.0 | 作者:SoSite | 状态:⛔ 未启用

16. [MINOR] FH-META-005 — plugins/draft_saver/Plugin.php:8

  • 症状:版本号与 plugin.json 不一致(基准 1.1.0):Plugin.php @version = 1.0.0。这类不一致不会报错,但升级页按 plugin.json 提示有新版本、用户升级完看说明还是旧版本号,会以为没升成功
  • 修法:把上面各处的版本号统一成 1.1.0。§12.2-7 列出的完整清单是 12 处:plugin.json + 说明.md 版本行 + 8 个 PHP 文件头 @version + 2 个 assets(本规则只查其中「明确声明插件版本」的那几处,文件级 @version 不查)
  • 原文:* @version 1.0.0

17. [MINOR] FH-META-005 — plugins/edit_info/说明.md:3

  • 症状:版本号与 plugin.json 不一致(基准 1.6.0):说明.md 版本行 = 1.5.0;Plugin.php @version = 1.0.0。这类不一致不会报错,但升级页按 plugin.json 提示有新版本、用户升级完看说明还是旧版本号,会以为没升成功
  • 修法:把上面各处的版本号统一成 1.6.0。§12.2-7 列出的完整清单是 12 处:plugin.json + 说明.md 版本行 + 8 个 PHP 文件头 @version + 2 个 assets(本规则只查其中「明确声明插件版本」的那几处,文件级 @version 不查)
  • 原文:> 版本:1.5.0 | 作者:SoSite | 状态:✅ 已启用

18. [MINOR] FH-META-005 — plugins/external_link_guard/说明.md:3

  • 症状:版本号与 plugin.json 不一致(基准 1.1.0):说明.md 版本行 = 1.0.0;Plugin.php @version = 1.0.0。这类不一致不会报错,但升级页按 plugin.json 提示有新版本、用户升级完看说明还是旧版本号,会以为没升成功
  • 修法:把上面各处的版本号统一成 1.1.0。§12.2-7 列出的完整清单是 12 处:plugin.json + 说明.md 版本行 + 8 个 PHP 文件头 @version + 2 个 assets(本规则只查其中「明确声明插件版本」的那几处,文件级 @version 不查)
  • 原文:> 版本:1.0.0 | 状态:已启用(ˋactivated: trueˋ)| 编制:2026-09-30

19. [MINOR] FH-META-005 — plugins/feidao/说明.md:3

  • 症状:版本号与 plugin.json 不一致(基准 1.1.0):说明.md 版本行 = 1.0.0;Plugin.php @version = 1.0.0;assets/style.css 版本注释 = 1.0.0。这类不一致不会报错,但升级页按 plugin.json 提示有新版本、用户升级完看说明还是旧版本号,会以为没升成功
  • 修法:把上面各处的版本号统一成 1.1.0。§12.2-7 列出的完整清单是 12 处:plugin.json + 说明.md 版本行 + 8 个 PHP 文件头 @version + 2 个 assets(本规则只查其中「明确声明插件版本」的那几处,文件级 @version 不查)
  • 原文:> 版本:1.0.0 | 作者:FlintHub | 状态:✅ 已启用

20. [MINOR] FH-META-005 — plugins/floor_reply/Plugin.php:7

  • 症状:版本号与 plugin.json 不一致(基准 1.3.1):Plugin.php @version = 1.0.0。这类不一致不会报错,但升级页按 plugin.json 提示有新版本、用户升级完看说明还是旧版本号,会以为没升成功
  • 修法:把上面各处的版本号统一成 1.3.1。§12.2-7 列出的完整清单是 12 处:plugin.json + 说明.md 版本行 + 8 个 PHP 文件头 @version + 2 个 assets(本规则只查其中「明确声明插件版本」的那几处,文件级 @version 不查)
  • 原文:* @version 1.0.0

21. [MINOR] FH-META-005 — plugins/friend_links/说明.md:3

  • 症状:版本号与 plugin.json 不一致(基准 2.1.0):说明.md 版本行 = 2.0.0;Plugin.php @version = 1.1.0。这类不一致不会报错,但升级页按 plugin.json 提示有新版本、用户升级完看说明还是旧版本号,会以为没升成功
  • 修法:把上面各处的版本号统一成 2.1.0。§12.2-7 列出的完整清单是 12 处:plugin.json + 说明.md 版本行 + 8 个 PHP 文件头 @version + 2 个 assets(本规则只查其中「明确声明插件版本」的那几处,文件级 @version 不查)
  • 原文:> 版本:2.0.0 | 作者:SoSite | 状态:✅ 已启用

22. [MINOR] FH-META-005 — plugins/home_members/Plugin.php:21

  • 症状:版本号与 plugin.json 不一致(基准 1.1.0):Plugin.php @version = 1.0.0;assets/script.js 版本注释 = 1.0.0;assets/style.css 版本注释 = 1.0.0。这类不一致不会报错,但升级页按 plugin.json 提示有新版本、用户升级完看说明还是旧版本号,会以为没升成功
  • 修法:把上面各处的版本号统一成 1.1.0。§12.2-7 列出的完整清单是 12 处:plugin.json + 说明.md 版本行 + 8 个 PHP 文件头 @version + 2 个 assets(本规则只查其中「明确声明插件版本」的那几处,文件级 @version 不查)
  • 原文:* @version 1.0.0

23. [MINOR] FH-META-005 — plugins/hottopics/Plugin.php:29

  • 症状:版本号与 plugin.json 不一致(基准 1.1.0):Plugin.php @version = 1.0.0。这类不一致不会报错,但升级页按 plugin.json 提示有新版本、用户升级完看说明还是旧版本号,会以为没升成功
  • 修法:把上面各处的版本号统一成 1.1.0。§12.2-7 列出的完整清单是 12 处:plugin.json + 说明.md 版本行 + 8 个 PHP 文件头 @version + 2 个 assets(本规则只查其中「明确声明插件版本」的那几处,文件级 @version 不查)
  • 原文:* @version 1.0.0

24. [MINOR] FH-META-005 — plugins/leaderboard/Plugin.php:17

  • 症状:版本号与 plugin.json 不一致(基准 1.1.0):Plugin.php @version = 1.0.0。这类不一致不会报错,但升级页按 plugin.json 提示有新版本、用户升级完看说明还是旧版本号,会以为没升成功
  • 修法:把上面各处的版本号统一成 1.1.0。§12.2-7 列出的完整清单是 12 处:plugin.json + 说明.md 版本行 + 8 个 PHP 文件头 @version + 2 个 assets(本规则只查其中「明确声明插件版本」的那几处,文件级 @version 不查)
  • 原文:* @version 1.0.0

25. [MINOR] FH-META-005 — plugins/like_points/Plugin.php:23

  • 症状:版本号与 plugin.json 不一致(基准 1.3.0):Plugin.php @version = 1.2.0。这类不一致不会报错,但升级页按 plugin.json 提示有新版本、用户升级完看说明还是旧版本号,会以为没升成功
  • 修法:把上面各处的版本号统一成 1.3.0。§12.2-7 列出的完整清单是 12 处:plugin.json + 说明.md 版本行 + 8 个 PHP 文件头 @version + 2 个 assets(本规则只查其中「明确声明插件版本」的那几处,文件级 @version 不查)
  • 原文:* @version 1.2.0

26. [MINOR] FH-META-005 — plugins/mail_resend/Plugin.php:21

  • 症状:版本号与 plugin.json 不一致(基准 1.0.1):Plugin.php @version = 1.0.0。这类不一致不会报错,但升级页按 plugin.json 提示有新版本、用户升级完看说明还是旧版本号,会以为没升成功
  • 修法:把上面各处的版本号统一成 1.0.1。§12.2-7 列出的完整清单是 12 处:plugin.json + 说明.md 版本行 + 8 个 PHP 文件头 @version + 2 个 assets(本规则只查其中「明确声明插件版本」的那几处,文件级 @version 不查)
  • 原文:* @version 1.0.0

27. [MINOR] FH-META-005 — plugins/market_hub/Plugin.php:25

  • 症状:版本号与 plugin.json 不一致(基准 1.2.1):Plugin.php @version = 1.0.0;assets/admin.css 版本注释 = 1.0.3;assets/style.css 版本注释 = 1.0.2。这类不一致不会报错,但升级页按 plugin.json 提示有新版本、用户升级完看说明还是旧版本号,会以为没升成功
  • 修法:把上面各处的版本号统一成 1.2.1。§12.2-7 列出的完整清单是 12 处:plugin.json + 说明.md 版本行 + 8 个 PHP 文件头 @version + 2 个 assets(本规则只查其中「明确声明插件版本」的那几处,文件级 @version 不查)
  • 原文:* @version 1.0.0

28. [MINOR] FH-META-005 — plugins/medal/说明.md:3

  • 症状:版本号与 plugin.json 不一致(基准 1.1.0):说明.md 版本行 = 1.0.0;Plugin.php @version = 1.0.0。这类不一致不会报错,但升级页按 plugin.json 提示有新版本、用户升级完看说明还是旧版本号,会以为没升成功
  • 修法:把上面各处的版本号统一成 1.1.0。§12.2-7 列出的完整清单是 12 处:plugin.json + 说明.md 版本行 + 8 个 PHP 文件头 @version + 2 个 assets(本规则只查其中「明确声明插件版本」的那几处,文件级 @version 不查)
  • 原文:> 版本:1.0.0 | 作者:SoSite | 状态:⏸️ 停用(默认未启用)

29. [MINOR] FH-META-005 — plugins/mod_system/说明.md:3

  • 症状:版本号与 plugin.json 不一致(基准 1.1.0):说明.md 版本行 = 1.0.0;Plugin.php @version = 1.0.0。这类不一致不会报错,但升级页按 plugin.json 提示有新版本、用户升级完看说明还是旧版本号,会以为没升成功
  • 修法:把上面各处的版本号统一成 1.1.0。§12.2-7 列出的完整清单是 12 处:plugin.json + 说明.md 版本行 + 8 个 PHP 文件头 @version + 2 个 assets(本规则只查其中「明确声明插件版本」的那几处,文件级 @version 不查)
  • 原文:> 版本:1.0.0 | 作者:FlintHub | 状态:⏸️ 停用(默认未启用)

30. [MINOR] FH-META-005 — plugins/mourning_mode/说明.md:3

  • 症状:版本号与 plugin.json 不一致(基准 1.1.0):说明.md 版本行 = 1.0.0;Plugin.php @version = 1.0.0。这类不一致不会报错,但升级页按 plugin.json 提示有新版本、用户升级完看说明还是旧版本号,会以为没升成功
  • 修法:把上面各处的版本号统一成 1.1.0。§12.2-7 列出的完整清单是 12 处:plugin.json + 说明.md 版本行 + 8 个 PHP 文件头 @version + 2 个 assets(本规则只查其中「明确声明插件版本」的那几处,文件级 @version 不查)
  • 原文:> 版本:1.0.0 | 作者:FlintHub | 状态:✅ 已启用

31. [MINOR] FH-META-005 — plugins/netdisk_help/说明.md:3

  • 症状:版本号与 plugin.json 不一致(基准 1.1.0):说明.md 版本行 = 1.0.0;Plugin.php @version = 1.0.0;assets/style.css 版本注释 = 1.0.0。这类不一致不会报错,但升级页按 plugin.json 提示有新版本、用户升级完看说明还是旧版本号,会以为没升成功
  • 修法:把上面各处的版本号统一成 1.1.0。§12.2-7 列出的完整清单是 12 处:plugin.json + 说明.md 版本行 + 8 个 PHP 文件头 @version + 2 个 assets(本规则只查其中「明确声明插件版本」的那几处,文件级 @version 不查)
  • 原文:> 版本:1.0.0 | 作者:FlintHub | 状态:✅ 已启用

32. [MINOR] FH-META-005 — plugins/new_members/说明.md:3

  • 症状:版本号与 plugin.json 不一致(基准 1.1.0):说明.md 版本行 = 1.0.0;Plugin.php @version = 1.0.0。这类不一致不会报错,但升级页按 plugin.json 提示有新版本、用户升级完看说明还是旧版本号,会以为没升成功
  • 修法:把上面各处的版本号统一成 1.1.0。§12.2-7 列出的完整清单是 12 处:plugin.json + 说明.md 版本行 + 8 个 PHP 文件头 @version + 2 个 assets(本规则只查其中「明确声明插件版本」的那几处,文件级 @version 不查)
  • 原文:> 版本 1.0.0 | 2026-09-27 | 依据 ˋdocs/插件开发规范.mdˋ

33. [MINOR] FH-META-005 — plugins/notice_center/Plugin.php:22

  • 症状:版本号与 plugin.json 不一致(基准 1.2.0):Plugin.php @version = 1.0.0。这类不一致不会报错,但升级页按 plugin.json 提示有新版本、用户升级完看说明还是旧版本号,会以为没升成功
  • 修法:把上面各处的版本号统一成 1.2.0。§12.2-7 列出的完整清单是 12 处:plugin.json + 说明.md 版本行 + 8 个 PHP 文件头 @version + 2 个 assets(本规则只查其中「明确声明插件版本」的那几处,文件级 @version 不查)
  • 原文:* @version 1.0.0

34. [MINOR] FH-META-005 — plugins/payment_center/说明.md:3

  • 症状:版本号与 plugin.json 不一致(基准 1.1.1):说明.md 版本行 = 1.0.0;Plugin.php @version = 1.0.0;assets/script.js 版本注释 = 1.0.0。这类不一致不会报错,但升级页按 plugin.json 提示有新版本、用户升级完看说明还是旧版本号,会以为没升成功
  • 修法:把上面各处的版本号统一成 1.1.1。§12.2-7 列出的完整清单是 12 处:plugin.json + 说明.md 版本行 + 8 个 PHP 文件头 @version + 2 个 assets(本规则只查其中「明确声明插件版本」的那几处,文件级 @version 不查)
  • 原文:> 版本:1.0.0 | 作者:FlintHub | 状态:✅ 已启用

35. [MINOR] FH-META-005 — plugins/points_mall/说明.md:3

  • 症状:版本号与 plugin.json 不一致(基准 1.1.0):说明.md 版本行 = 1.0.0;Plugin.php @version = 1.0.0。这类不一致不会报错,但升级页按 plugin.json 提示有新版本、用户升级完看说明还是旧版本号,会以为没升成功
  • 修法:把上面各处的版本号统一成 1.1.0。§12.2-7 列出的完整清单是 12 处:plugin.json + 说明.md 版本行 + 8 个 PHP 文件头 @version + 2 个 assets(本规则只查其中「明确声明插件版本」的那几处,文件级 @version 不查)
  • 原文:> 版本:1.0.0 | 作者:FlintHub | 状态:✅ 已启用

36. [MINOR] FH-META-005 — plugins/post_favorite/说明.md:3

  • 症状:版本号与 plugin.json 不一致(基准 1.1.0):说明.md 版本行 = 1.0.0;Plugin.php @version = 1.0.0。这类不一致不会报错,但升级页按 plugin.json 提示有新版本、用户升级完看说明还是旧版本号,会以为没升成功
  • 修法:把上面各处的版本号统一成 1.1.0。§12.2-7 列出的完整清单是 12 处:plugin.json + 说明.md 版本行 + 8 个 PHP 文件头 @version + 2 个 assets(本规则只查其中「明确声明插件版本」的那几处,文件级 @version 不查)
  • 原文:> 版本:1.0.0 | 作者:SoSite | 状态:⏸️ 停用(默认未启用)

37. [MINOR] FH-META-005 — plugins/post_poll/Plugin.php:18

  • 症状:版本号与 plugin.json 不一致(基准 1.1.0):Plugin.php @version = 1.0.0;assets/admin.js 版本注释 = 1.0.0;assets/form.js 版本注释 = 1.0.0;assets/style.css 版本注释 = 1.0.0;等 5 处。这类不一致不会报错,但升级页按 plugin.json 提示有新版本、用户升级完看说明还是旧版本号,会以为没升成功
  • 修法:把上面各处的版本号统一成 1.1.0。§12.2-7 列出的完整清单是 12 处:plugin.json + 说明.md 版本行 + 8 个 PHP 文件头 @version + 2 个 assets(本规则只查其中「明确声明插件版本」的那几处,文件级 @version 不查)
  • 原文:* @version 1.0.0

38. [MINOR] FH-META-005 — plugins/props/Plugin.php:14

  • 症状:版本号与 plugin.json 不一致(基准 1.1.0):Plugin.php @version = 1.0.0。这类不一致不会报错,但升级页按 plugin.json 提示有新版本、用户升级完看说明还是旧版本号,会以为没升成功
  • 修法:把上面各处的版本号统一成 1.1.0。§12.2-7 列出的完整清单是 12 处:plugin.json + 说明.md 版本行 + 8 个 PHP 文件头 @version + 2 个 assets(本规则只查其中「明确声明插件版本」的那几处,文件级 @version 不查)
  • 原文:* @version 1.0.0

39. [MINOR] FH-META-005 — plugins/qa/说明.md:3

  • 症状:版本号与 plugin.json 不一致(基准 1.1.0):说明.md 版本行 = 1.0.0;Plugin.php @version = 1.0.0。这类不一致不会报错,但升级页按 plugin.json 提示有新版本、用户升级完看说明还是旧版本号,会以为没升成功
  • 修法:把上面各处的版本号统一成 1.1.0。§12.2-7 列出的完整清单是 12 处:plugin.json + 说明.md 版本行 + 8 个 PHP 文件头 @version + 2 个 assets(本规则只查其中「明确声明插件版本」的那几处,文件级 @version 不查)
  • 原文:> 版本:1.0.0 | 作者:FlintHub | 状态:⛔ 未启用

40. [MINOR] FH-META-005 — plugins/red_packet/说明.md:3

  • 症状:版本号与 plugin.json 不一致(基准 1.9.0):说明.md 版本行 = 1.8.0;Plugin.php @version = 1.0.0。这类不一致不会报错,但升级页按 plugin.json 提示有新版本、用户升级完看说明还是旧版本号,会以为没升成功
  • 修法:把上面各处的版本号统一成 1.9.0。§12.2-7 列出的完整清单是 12 处:plugin.json + 说明.md 版本行 + 8 个 PHP 文件头 @version + 2 个 assets(本规则只查其中「明确声明插件版本」的那几处,文件级 @version 不查)
  • 原文:> 版本:1.8.0 | 作者:SoSite | 状态:⏸️ 停用(默认未启用)

41. [MINOR] FH-META-005 — plugins/reply_reward/Plugin.php:16

  • 症状:版本号与 plugin.json 不一致(基准 1.1.0):Plugin.php @version = 1.0.0;assets/script.js 版本注释 = 1.0.0;assets/style.css 版本注释 = 1.0.0。这类不一致不会报错,但升级页按 plugin.json 提示有新版本、用户升级完看说明还是旧版本号,会以为没升成功
  • 修法:把上面各处的版本号统一成 1.1.0。§12.2-7 列出的完整清单是 12 处:plugin.json + 说明.md 版本行 + 8 个 PHP 文件头 @version + 2 个 assets(本规则只查其中「明确声明插件版本」的那几处,文件级 @version 不查)
  • 原文:* @version 1.0.0

42. [MINOR] FH-META-005 — plugins/seo/说明.md:3

  • 症状:版本号与 plugin.json 不一致(基准 1.6.0):说明.md 版本行 = 1.5.0;Plugin.php @version = 1.4.0。这类不一致不会报错,但升级页按 plugin.json 提示有新版本、用户升级完看说明还是旧版本号,会以为没升成功
  • 修法:把上面各处的版本号统一成 1.6.0。§12.2-7 列出的完整清单是 12 处:plugin.json + 说明.md 版本行 + 8 个 PHP 文件头 @version + 2 个 assets(本规则只查其中「明确声明插件版本」的那几处,文件级 @version 不查)
  • 原文:> 版本:1.5.0 | 作者:SoSite | 状态:✅ 已启用

43. [MINOR] FH-META-005 — plugins/single_page/Plugin.php:7

  • 症状:版本号与 plugin.json 不一致(基准 1.1.0):Plugin.php @version = 1.0.0。这类不一致不会报错,但升级页按 plugin.json 提示有新版本、用户升级完看说明还是旧版本号,会以为没升成功
  • 修法:把上面各处的版本号统一成 1.1.0。§12.2-7 列出的完整清单是 12 处:plugin.json + 说明.md 版本行 + 8 个 PHP 文件头 @version + 2 个 assets(本规则只查其中「明确声明插件版本」的那几处,文件级 @version 不查)
  • 原文:* @version 1.0.0

44. [MINOR] FH-META-005 — plugins/site_stats/说明.md:5

  • 症状:版本号与 plugin.json 不一致(基准 1.3.0):说明.md 版本行 = 1.2.0。这类不一致不会报错,但升级页按 plugin.json 提示有新版本、用户升级完看说明还是旧版本号,会以为没升成功
  • 修法:把上面各处的版本号统一成 1.3.0。§12.2-7 列出的完整清单是 12 处:plugin.json + 说明.md 版本行 + 8 个 PHP 文件头 @version + 2 个 assets(本规则只查其中「明确声明插件版本」的那几处,文件级 @version 不查)
  • 原文:- 插件版本:1.2.0

45. [MINOR] FH-META-005 — plugins/suiyu/Plugin.php:12

  • 症状:版本号与 plugin.json 不一致(基准 1.1.0):Plugin.php @version = 1.0.0;assets/script.js 版本注释 = 1.0.0;assets/style.css 版本注释 = 1.0.0。这类不一致不会报错,但升级页按 plugin.json 提示有新版本、用户升级完看说明还是旧版本号,会以为没升成功
  • 修法:把上面各处的版本号统一成 1.1.0。§12.2-7 列出的完整清单是 12 处:plugin.json + 说明.md 版本行 + 8 个 PHP 文件头 @version + 2 个 assets(本规则只查其中「明确声明插件版本」的那几处,文件级 @version 不查)
  • 原文:* @version 1.0.0

46. [MINOR] FH-META-005 — plugins/task_center/Plugin.php:7

  • 症状:版本号与 plugin.json 不一致(基准 1.1.0):Plugin.php @version = 1.0.0。这类不一致不会报错,但升级页按 plugin.json 提示有新版本、用户升级完看说明还是旧版本号,会以为没升成功
  • 修法:把上面各处的版本号统一成 1.1.0。§12.2-7 列出的完整清单是 12 处:plugin.json + 说明.md 版本行 + 8 个 PHP 文件头 @version + 2 个 assets(本规则只查其中「明确声明插件版本」的那几处,文件级 @version 不查)
  • 原文:* @version 1.0.0

47. [MINOR] FH-META-005 — plugins/third_party_login/说明.md:3

  • 症状:版本号与 plugin.json 不一致(基准 1.1.0):说明.md 版本行 = 1.0.0。这类不一致不会报错,但升级页按 plugin.json 提示有新版本、用户升级完看说明还是旧版本号,会以为没升成功
  • 修法:把上面各处的版本号统一成 1.1.0。§12.2-7 列出的完整清单是 12 处:plugin.json + 说明.md 版本行 + 8 个 PHP 文件头 @version + 2 个 assets(本规则只查其中「明确声明插件版本」的那几处,文件级 @version 不查)
  • 原文:> 版本:1.0.0 | 作者:FlintHub | 状态:⛔ 未启用

48. [MINOR] FH-META-005 — plugins/user_level/说明.md:3

  • 症状:版本号与 plugin.json 不一致(基准 1.1.0):说明.md 版本行 = 1.0.0;Plugin.php @version = 1.0.0。这类不一致不会报错,但升级页按 plugin.json 提示有新版本、用户升级完看说明还是旧版本号,会以为没升成功
  • 修法:把上面各处的版本号统一成 1.1.0。§12.2-7 列出的完整清单是 12 处:plugin.json + 说明.md 版本行 + 8 个 PHP 文件头 @version + 2 个 assets(本规则只查其中「明确声明插件版本」的那几处,文件级 @version 不查)
  • 原文:> 版本:1.0.0 | 作者:FlintHub | 状态:✅ 已启用

49. [MINOR] FH-META-005 — plugins/user_profile/说明.md:3

  • 症状:版本号与 plugin.json 不一致(基准 1.1.0):说明.md 版本行 = 1.0.0。这类不一致不会报错,但升级页按 plugin.json 提示有新版本、用户升级完看说明还是旧版本号,会以为没升成功
  • 修法:把上面各处的版本号统一成 1.1.0。§12.2-7 列出的完整清单是 12 处:plugin.json + 说明.md 版本行 + 8 个 PHP 文件头 @version + 2 个 assets(本规则只查其中「明确声明插件版本」的那几处,文件级 @version 不查)
  • 原文:> 版本:1.0.0 | 作者:SoSite | 状态:✅ 已启用

50. [MINOR] FH-META-005 — plugins/vn_block/Plugin.php:10

  • 症状:版本号与 plugin.json 不一致(基准 1.1.0):Plugin.php @version = 1.0.1。这类不一致不会报错,但升级页按 plugin.json 提示有新版本、用户升级完看说明还是旧版本号,会以为没升成功
  • 修法:把上面各处的版本号统一成 1.1.0。§12.2-7 列出的完整清单是 12 处:plugin.json + 说明.md 版本行 + 8 个 PHP 文件头 @version + 2 个 assets(本规则只查其中「明确声明插件版本」的那几处,文件级 @version 不查)
  • 原文:* @version 1.0.1

51. [MINOR] FH-META-005 — plugins/vn_postname/Plugin.php:7

  • 症状:版本号与 plugin.json 不一致(基准 2.1.0):Plugin.php @version = 2.0.0。这类不一致不会报错,但升级页按 plugin.json 提示有新版本、用户升级完看说明还是旧版本号,会以为没升成功
  • 修法:把上面各处的版本号统一成 2.1.0。§12.2-7 列出的完整清单是 12 处:plugin.json + 说明.md 版本行 + 8 个 PHP 文件头 @version + 2 个 assets(本规则只查其中「明确声明插件版本」的那几处,文件级 @version 不查)
  • 原文:* @version 2.0.0

52. [MINOR] FH-META-005 — plugins/xiuxian/Plugin.php:7

  • 症状:版本号与 plugin.json 不一致(基准 1.1.0):Plugin.php @version = 1.0.0。这类不一致不会报错,但升级页按 plugin.json 提示有新版本、用户升级完看说明还是旧版本号,会以为没升成功
  • 修法:把上面各处的版本号统一成 1.1.0。§12.2-7 列出的完整清单是 12 处:plugin.json + 说明.md 版本行 + 8 个 PHP 文件头 @version + 2 个 assets(本规则只查其中「明确声明插件版本」的那几处,文件级 @version 不查)
  • 原文:* @version 1.0.0

53. [INFO] FH-DB-001 — plugins/ai_assistant/cli/diag_thread.php:34

  • 症状:直接查询了核心表:topic_index、topic。插件与核心表结构强耦合:核心加字段/改名时插件会静默出错,而且会绕过核心的业务层过滤(软删除、权限、分片),典型症状是「读到已删除/越权的数据」
  • 修法:确认这处读取是只读且字段稳定的(如作者名、分类名)。若需要写入或依赖易变字段,优先调用核心提供的公共方法;无论哪种,都要在插件 说明.md 里注明「依赖核心表 X 的 Y 字段」,核心改表时才知道要同步检查这个插件
  • 原文:第 34 行的 SQL 字面量

54. [INFO] FH-DB-001 — plugins/bitiful_storage/Plugin.php:481

  • 症状:直接查询了核心表:settings。插件与核心表结构强耦合:核心加字段/改名时插件会静默出错,而且会绕过核心的业务层过滤(软删除、权限、分片),典型症状是「读到已删除/越权的数据」
  • 修法:确认这处读取是只读且字段稳定的(如作者名、分类名)。若需要写入或依赖易变字段,优先调用核心提供的公共方法;无论哪种,都要在插件 说明.md 里注明「依赖核心表 X 的 Y 字段」,核心改表时才知道要同步检查这个插件
  • 原文:第 481 行的 SQL 字面量

55. [INFO] FH-DB-001 — plugins/code_repo/Plugin.php:95

  • 症状:直接查询了核心表:settings。插件与核心表结构强耦合:核心加字段/改名时插件会静默出错,而且会绕过核心的业务层过滤(软删除、权限、分片),典型症状是「读到已删除/越权的数据」
  • 修法:确认这处读取是只读且字段稳定的(如作者名、分类名)。若需要写入或依赖易变字段,优先调用核心提供的公共方法;无论哪种,都要在插件 说明.md 里注明「依赖核心表 X 的 Y 字段」,核心改表时才知道要同步检查这个插件
  • 原文:第 95 行的 SQL 字面量

56. [INFO] FH-DB-001 — plugins/feidao/Plugin.php:168

  • 症状:直接查询了核心表:users。插件与核心表结构强耦合:核心加字段/改名时插件会静默出错,而且会绕过核心的业务层过滤(软删除、权限、分片),典型症状是「读到已删除/越权的数据」
  • 修法:确认这处读取是只读且字段稳定的(如作者名、分类名)。若需要写入或依赖易变字段,优先调用核心提供的公共方法;无论哪种,都要在插件 说明.md 里注明「依赖核心表 X 的 Y 字段」,核心改表时才知道要同步检查这个插件
  • 原文:第 168 行的 SQL 字面量

57. [INFO] FH-DB-001 — plugins/floor_reply/Plugin.php:87

  • 症状:直接查询了核心表:settings。插件与核心表结构强耦合:核心加字段/改名时插件会静默出错,而且会绕过核心的业务层过滤(软删除、权限、分片),典型症状是「读到已删除/越权的数据」
  • 修法:确认这处读取是只读且字段稳定的(如作者名、分类名)。若需要写入或依赖易变字段,优先调用核心提供的公共方法;无论哪种,都要在插件 说明.md 里注明「依赖核心表 X 的 Y 字段」,核心改表时才知道要同步检查这个插件
  • 原文:第 87 行的 SQL 字面量

58. [INFO] FH-DB-001 — plugins/home_members/Plugin.php:208

  • 症状:直接查询了核心表:settings、users。插件与核心表结构强耦合:核心加字段/改名时插件会静默出错,而且会绕过核心的业务层过滤(软删除、权限、分片),典型症状是「读到已删除/越权的数据」
  • 修法:确认这处读取是只读且字段稳定的(如作者名、分类名)。若需要写入或依赖易变字段,优先调用核心提供的公共方法;无论哪种,都要在插件 说明.md 里注明「依赖核心表 X 的 Y 字段」,核心改表时才知道要同步检查这个插件
  • 原文:第 208 行的 SQL 字面量

59. [INFO] FH-DB-001 — plugins/home_spotlight/Plugin.php:239

  • 症状:直接查询了核心表:settings、topic_index、users。插件与核心表结构强耦合:核心加字段/改名时插件会静默出错,而且会绕过核心的业务层过滤(软删除、权限、分片),典型症状是「读到已删除/越权的数据」
  • 修法:确认这处读取是只读且字段稳定的(如作者名、分类名)。若需要写入或依赖易变字段,优先调用核心提供的公共方法;无论哪种,都要在插件 说明.md 里注明「依赖核心表 X 的 Y 字段」,核心改表时才知道要同步检查这个插件
  • 原文:第 239 行的 SQL 字面量

60. [INFO] FH-DB-001 — plugins/leaderboard/Plugin.php:212

  • 症状:直接查询了核心表:users、topic_index、reply_index。插件与核心表结构强耦合:核心加字段/改名时插件会静默出错,而且会绕过核心的业务层过滤(软删除、权限、分片),典型症状是「读到已删除/越权的数据」
  • 修法:确认这处读取是只读且字段稳定的(如作者名、分类名)。若需要写入或依赖易变字段,优先调用核心提供的公共方法;无论哪种,都要在插件 说明.md 里注明「依赖核心表 X 的 Y 字段」,核心改表时才知道要同步检查这个插件
  • 原文:第 212 行的 SQL 字面量

61. [INFO] FH-DB-001 — plugins/like_points/AdminController.php:155

  • 症状:直接查询了核心表:users。插件与核心表结构强耦合:核心加字段/改名时插件会静默出错,而且会绕过核心的业务层过滤(软删除、权限、分片),典型症状是「读到已删除/越权的数据」
  • 修法:确认这处读取是只读且字段稳定的(如作者名、分类名)。若需要写入或依赖易变字段,优先调用核心提供的公共方法;无论哪种,都要在插件 说明.md 里注明「依赖核心表 X 的 Y 字段」,核心改表时才知道要同步检查这个插件
  • 原文:第 155 行的 SQL 字面量

62. [INFO] FH-DB-001 — plugins/lucky_draw/Plugin.php:112

  • 症状:直接查询了核心表:settings。插件与核心表结构强耦合:核心加字段/改名时插件会静默出错,而且会绕过核心的业务层过滤(软删除、权限、分片),典型症状是「读到已删除/越权的数据」
  • 修法:确认这处读取是只读且字段稳定的(如作者名、分类名)。若需要写入或依赖易变字段,优先调用核心提供的公共方法;无论哪种,都要在插件 说明.md 里注明「依赖核心表 X 的 Y 字段」,核心改表时才知道要同步检查这个插件
  • 原文:第 112 行的 SQL 字面量

63. [INFO] FH-DB-001 — plugins/mcp_server/Plugin.php:279

  • 症状:直接查询了核心表:users。插件与核心表结构强耦合:核心加字段/改名时插件会静默出错,而且会绕过核心的业务层过滤(软删除、权限、分片),典型症状是「读到已删除/越权的数据」
  • 修法:确认这处读取是只读且字段稳定的(如作者名、分类名)。若需要写入或依赖易变字段,优先调用核心提供的公共方法;无论哪种,都要在插件 说明.md 里注明「依赖核心表 X 的 Y 字段」,核心改表时才知道要同步检查这个插件
  • 原文:第 279 行的 SQL 字面量

64. [INFO] FH-DB-001 — plugins/medal/Plugin.php:309

  • 症状:直接查询了核心表:topic_index、reply_index。插件与核心表结构强耦合:核心加字段/改名时插件会静默出错,而且会绕过核心的业务层过滤(软删除、权限、分片),典型症状是「读到已删除/越权的数据」
  • 修法:确认这处读取是只读且字段稳定的(如作者名、分类名)。若需要写入或依赖易变字段,优先调用核心提供的公共方法;无论哪种,都要在插件 说明.md 里注明「依赖核心表 X 的 Y 字段」,核心改表时才知道要同步检查这个插件
  • 原文:第 309 行的 SQL 字面量

65. [INFO] FH-DB-001 — plugins/mobile_api/Controllers/AuthController.php:64

  • 症状:直接查询了核心表:settings。插件与核心表结构强耦合:核心加字段/改名时插件会静默出错,而且会绕过核心的业务层过滤(软删除、权限、分片),典型症状是「读到已删除/越权的数据」
  • 修法:确认这处读取是只读且字段稳定的(如作者名、分类名)。若需要写入或依赖易变字段,优先调用核心提供的公共方法;无论哪种,都要在插件 说明.md 里注明「依赖核心表 X 的 Y 字段」,核心改表时才知道要同步检查这个插件
  • 原文:第 64 行的 SQL 字面量

66. [INFO] FH-DB-001 — plugins/mobile_api/MessageRepo.php:34

  • 症状:直接查询了核心表:messages、users。插件与核心表结构强耦合:核心加字段/改名时插件会静默出错,而且会绕过核心的业务层过滤(软删除、权限、分片),典型症状是「读到已删除/越权的数据」
  • 修法:确认这处读取是只读且字段稳定的(如作者名、分类名)。若需要写入或依赖易变字段,优先调用核心提供的公共方法;无论哪种,都要在插件 说明.md 里注明「依赖核心表 X 的 Y 字段」,核心改表时才知道要同步检查这个插件
  • 原文:第 34 行的 SQL 字面量

67. [INFO] FH-DB-001 — plugins/mobile_api/Plugin.php:309

  • 症状:直接查询了核心表:users。插件与核心表结构强耦合:核心加字段/改名时插件会静默出错,而且会绕过核心的业务层过滤(软删除、权限、分片),典型症状是「读到已删除/越权的数据」
  • 修法:确认这处读取是只读且字段稳定的(如作者名、分类名)。若需要写入或依赖易变字段,优先调用核心提供的公共方法;无论哪种,都要在插件 说明.md 里注明「依赖核心表 X 的 Y 字段」,核心改表时才知道要同步检查这个插件
  • 原文:第 309 行的 SQL 字面量

68. [INFO] FH-DB-001 — plugins/mod_system/AdminController.php:283

  • 症状:直接查询了核心表:topic_index、reply_index、blogs。插件与核心表结构强耦合:核心加字段/改名时插件会静默出错,而且会绕过核心的业务层过滤(软删除、权限、分片),典型症状是「读到已删除/越权的数据」
  • 修法:确认这处读取是只读且字段稳定的(如作者名、分类名)。若需要写入或依赖易变字段,优先调用核心提供的公共方法;无论哪种,都要在插件 说明.md 里注明「依赖核心表 X 的 Y 字段」,核心改表时才知道要同步检查这个插件
  • 原文:第 283 行的 SQL 字面量

69. [INFO] FH-DB-001 — plugins/mod_system/FrontController.php:223

  • 症状:直接查询了核心表:topic_index、reply_index、blogs。插件与核心表结构强耦合:核心加字段/改名时插件会静默出错,而且会绕过核心的业务层过滤(软删除、权限、分片),典型症状是「读到已删除/越权的数据」
  • 修法:确认这处读取是只读且字段稳定的(如作者名、分类名)。若需要写入或依赖易变字段,优先调用核心提供的公共方法;无论哪种,都要在插件 说明.md 里注明「依赖核心表 X 的 Y 字段」,核心改表时才知道要同步检查这个插件
  • 原文:第 223 行的 SQL 字面量

70. [INFO] FH-DB-001 — plugins/mod_system/Plugin.php:92

  • 症状:直接查询了核心表:settings。插件与核心表结构强耦合:核心加字段/改名时插件会静默出错,而且会绕过核心的业务层过滤(软删除、权限、分片),典型症状是「读到已删除/越权的数据」
  • 修法:确认这处读取是只读且字段稳定的(如作者名、分类名)。若需要写入或依赖易变字段,优先调用核心提供的公共方法;无论哪种,都要在插件 说明.md 里注明「依赖核心表 X 的 Y 字段」,核心改表时才知道要同步检查这个插件
  • 原文:第 92 行的 SQL 字面量

71. [INFO] FH-DB-001 — plugins/mourning_mode/Plugin.php:89

  • 症状:直接查询了核心表:settings。插件与核心表结构强耦合:核心加字段/改名时插件会静默出错,而且会绕过核心的业务层过滤(软删除、权限、分片),典型症状是「读到已删除/越权的数据」
  • 修法:确认这处读取是只读且字段稳定的(如作者名、分类名)。若需要写入或依赖易变字段,优先调用核心提供的公共方法;无论哪种,都要在插件 说明.md 里注明「依赖核心表 X 的 Y 字段」,核心改表时才知道要同步检查这个插件
  • 原文:第 89 行的 SQL 字面量

72. [INFO] FH-DB-001 — plugins/netdisk_help/AdminController.php:310

  • 症状:直接查询了核心表:points_log。插件与核心表结构强耦合:核心加字段/改名时插件会静默出错,而且会绕过核心的业务层过滤(软删除、权限、分片),典型症状是「读到已删除/越权的数据」
  • 修法:确认这处读取是只读且字段稳定的(如作者名、分类名)。若需要写入或依赖易变字段,优先调用核心提供的公共方法;无论哪种,都要在插件 说明.md 里注明「依赖核心表 X 的 Y 字段」,核心改表时才知道要同步检查这个插件
  • 原文:第 310 行的 SQL 字面量

73. [INFO] FH-DB-001 — plugins/netdisk_help/Plugin.php:275

  • 症状:直接查询了核心表:settings、users。插件与核心表结构强耦合:核心加字段/改名时插件会静默出错,而且会绕过核心的业务层过滤(软删除、权限、分片),典型症状是「读到已删除/越权的数据」
  • 修法:确认这处读取是只读且字段稳定的(如作者名、分类名)。若需要写入或依赖易变字段,优先调用核心提供的公共方法;无论哪种,都要在插件 说明.md 里注明「依赖核心表 X 的 Y 字段」,核心改表时才知道要同步检查这个插件
  • 原文:第 275 行的 SQL 字面量

74. [INFO] FH-DB-001 — plugins/new_members/Plugin.php:50

  • 症状:直接查询了核心表:users。插件与核心表结构强耦合:核心加字段/改名时插件会静默出错,而且会绕过核心的业务层过滤(软删除、权限、分片),典型症状是「读到已删除/越权的数据」
  • 修法:确认这处读取是只读且字段稳定的(如作者名、分类名)。若需要写入或依赖易变字段,优先调用核心提供的公共方法;无论哪种,都要在插件 说明.md 里注明「依赖核心表 X 的 Y 字段」,核心改表时才知道要同步检查这个插件
  • 原文:第 50 行的 SQL 字面量

75. [INFO] FH-DB-001 — plugins/notice_center/Plugin.php:197

  • 症状:直接查询了核心表:settings。插件与核心表结构强耦合:核心加字段/改名时插件会静默出错,而且会绕过核心的业务层过滤(软删除、权限、分片),典型症状是「读到已删除/越权的数据」
  • 修法:确认这处读取是只读且字段稳定的(如作者名、分类名)。若需要写入或依赖易变字段,优先调用核心提供的公共方法;无论哪种,都要在插件 说明.md 里注明「依赖核心表 X 的 Y 字段」,核心改表时才知道要同步检查这个插件
  • 原文:第 197 行的 SQL 字面量

76. [INFO] FH-DB-001 — plugins/payment_center/Plugin.php:769

  • 症状:直接查询了核心表:points_log。插件与核心表结构强耦合:核心加字段/改名时插件会静默出错,而且会绕过核心的业务层过滤(软删除、权限、分片),典型症状是「读到已删除/越权的数据」
  • 修法:确认这处读取是只读且字段稳定的(如作者名、分类名)。若需要写入或依赖易变字段,优先调用核心提供的公共方法;无论哪种,都要在插件 说明.md 里注明「依赖核心表 X 的 Y 字段」,核心改表时才知道要同步检查这个插件
  • 原文:第 769 行的 SQL 字面量

77. [INFO] FH-DB-001 — plugins/pledge_checkin/Plugin.php:860

  • 症状:直接查询了核心表:users。插件与核心表结构强耦合:核心加字段/改名时插件会静默出错,而且会绕过核心的业务层过滤(软删除、权限、分片),典型症状是「读到已删除/越权的数据」
  • 修法:确认这处读取是只读且字段稳定的(如作者名、分类名)。若需要写入或依赖易变字段,优先调用核心提供的公共方法;无论哪种,都要在插件 说明.md 里注明「依赖核心表 X 的 Y 字段」,核心改表时才知道要同步检查这个插件
  • 原文:第 860 行的 SQL 字面量

78. [INFO] FH-DB-001 — plugins/points_mall/AdminController.php:107

  • 症状:直接查询了核心表:user_groups。插件与核心表结构强耦合:核心加字段/改名时插件会静默出错,而且会绕过核心的业务层过滤(软删除、权限、分片),典型症状是「读到已删除/越权的数据」
  • 修法:确认这处读取是只读且字段稳定的(如作者名、分类名)。若需要写入或依赖易变字段,优先调用核心提供的公共方法;无论哪种,都要在插件 说明.md 里注明「依赖核心表 X 的 Y 字段」,核心改表时才知道要同步检查这个插件
  • 原文:第 107 行的 SQL 字面量

79. [INFO] FH-DB-001 — plugins/points_mall/Plugin.php:502

  • 症状:直接查询了核心表:user_groups。插件与核心表结构强耦合:核心加字段/改名时插件会静默出错,而且会绕过核心的业务层过滤(软删除、权限、分片),典型症状是「读到已删除/越权的数据」
  • 修法:确认这处读取是只读且字段稳定的(如作者名、分类名)。若需要写入或依赖易变字段,优先调用核心提供的公共方法;无论哪种,都要在插件 说明.md 里注明「依赖核心表 X 的 Y 字段」,核心改表时才知道要同步检查这个插件
  • 原文:第 502 行的 SQL 字面量
轻量级、高性能、零 MySQL 依赖的PHP社区系统。
| 浏览 4 次 | 回复 0 次

全部回复 (0)

暂无回复

请 登录