- 更好的面包屑ID better-breadcrumb版本 1.1.0插件制作者 mingmeo免费440 行 / 13.5 KBHook为论坛提供了更好的面包屑导航,精准记录页面历史,优化用户体验app/plugins/better-breadcrumb/plugin.php开发日志已有 2 条
此项目接受所有登录用户协助维护和提交更新。
主楼 插件质量报告
插件:
better-breadcrumbHook 功能范围 循环 使用频率 文件读写 修改系统表 读写系统表 读写自己的表 page.before_render 全站页面输出前 否 5 - - - - page.footer 全站页面页脚 否 5 - - - - page.head 全站页面 head 否 5 - - - - 颜色说明:黄色表示有数据读写,红色表示 Hook 在系统循环中执行,浅蓝色表示有文件写入。“列表跳过”表示回调在列表路径会提前返回,“回调内”表示操作位于回调自身或其帮助函数的循环体内。“文件批处理”表示逐个处理用户一次提交的文件,属于必要操作,不标记修正。只有操作实际处于需要优化的循环路径时,才会标记“修正❗️”。
数据字典
未检测到插件数据表声明。
better-breadcrumb 更好的面包屑
本插件存在JS注入
简介
论坛的面包屑一直以来几乎只是摆设——因为不管怎么进入帖子,面包屑始终显示为
首页/板块名,这实在太糟糕了。所以本插件给链接增加了path参数,详细记录来源。示例
首页 -> 帖子「帖子标题」
首页/帖子板块首页/帖子标题 // 帖子标题会显示为灰色 - 不可点击首页 -> 板块名 -> 帖子
首页/板块名首页/板块名/帖子标题首页 -> 搜索 -> 帖子「帖子标题」
首页/帖子板块首页/搜索/帖子标题实现
通过JS注入给每个链接追加类似
path=index-search-topic的
path参数,这样用户从哪里进入哪个页面,又点了哪个帖子,都会被清晰记录。Q&A
<details>
<summary>
<b>
path参数也没有校验之类的,有人直接修改URL参数怎么办?
</b>
</summary>
直接修改确实可以,但是您真的会没事去修改一个面包屑导航吗?就算修改了又有什么意义呢?
</details><details>
<summary>
<b>
有人构造含有恶意HTML标签的path参数怎么办?
</b>
</summary>
有转义,标签会原样文本显示在面包屑上,不会执行。
</details><details>
<summary>
<b>
从搜索引擎点进来或者链接直接访问没有path参数面包屑会炸吗?
</b>
</summary>
不会。没有path参数时,插件会自动使用首页/板块名/帖子标题炸不了。
</details>最后由 mingmeo 编辑于 2026-08-15 01:25🔍 插件审查报告(对照《AI 开发规则》与开发者文档)
🔒 安全问题
- 反射型 XSS:
better_breadcrumb_footer中var basePath = '{$basePath}';(plugin.php:137)未转义。$basePath源自$_GET['path'](plugin.php:62-66 原始返回,123 赋值,125-127 仅补前缀)。攻击者构造?path=index';alert(document.cookie);//即可在任意页面执行脚本。请改用json_encode($basePath, JSON_HEX_TAG|JSON_HEX_AMP|JSON_HEX_APOS|JSON_HEX_QUOT)输出,或通过data-*属性传递。
⚡ 性能问题
未发现明显问题。面包屑构建仅针对单页做少量按需查询,无循环查询。
🐛 功能/规范缺陷
未发现明显问题。标签输出均经
h()转义。✅ 修复优先级
立即修复
path参数的 JS 注入(高危)。- 反射型 XSS:
🔍 复核报告(v1.1.0,回应此前审查)· @banming
✅ 已确认修复
- 反射型 XSS 已修复:footer 中 basePath 改用 json_encode($basePath, JSON_HEX_TAG|JSON_HEX_AMP|JSON_HEX_APOS|JSON_HEX_QUOT) 输出(plugin.php:129、139),不再直接拼接 $basePath;head 脚本也用 json_encode(plugin.php:106-108,默认转义 / 与 "),无法再通过 ?path=index';alert(...) 逃逸——正确。
❌ 新问题
未发现明显问题:面包屑 label/URL 均经 h() 转义(plugin.php:414-418),查询参数化(plugin.php:72、298、305)。
💡 顺带建议
两段脚本仍内联输出(plugin.php:106-108、131-139),规则要求 JS 走 assets + data-*,建议后续迁移;当前无安全风险。
总结:高危 XSS 已修复,插件干净。
🔍 插件审查报告(AI 自动审查,对照《AI 开发规则》与开发者文档;本插件未被 8/18 楼上 350 的报告覆盖,属独立首次审查)
插件:更好的面包屑(better-breadcrumb)v1.1.0
结论:已完成命名规范、生命周期(install/uninstall 幂等)、数据库跨库兼容、红区 Hook 零 DB 读、Hook 真实性(含核心与跨插件依赖核对)、SQL 注入风险、CSRF/权限校验、CSS 变量规范等项审查,未发现安全、性能或功能性问题。