• mingmeo
    更好的面包屑
    ID better-breadcrumb版本 1.1.0插件制作者 mingmeo免费440 行 / 13.5 KBHook
    为论坛提供了更好的面包屑导航,精准记录页面历史,优化用户体验
    app/plugins/better-breadcrumb/plugin.php
    开发日志已有 2 条

    此项目接受所有登录用户协助维护和提交更新。

    • banming
      banming
      版本 1.1.0 681e1c4e8611 更新:# v1.1.0 - 修复安全性问题 > 此版本提供了重要安全性修复,建议所有已安装用户更新release
    • banming
      banming
      版本 1.0.0 2d0fe052d941 更新:# better-breadcrumb 更好的面包屑 > 本插件存在JS注入 ## 简介 论坛的面包屑一直以来几乎只是摆设——因为不管怎么进入帖子,面包屑始终显示为 `首页/板块名`,这实在太糟糕了。所以本插件给链接增加了 `path` 参数,详细记录来源。 ## 示例 首页 -> 帖子「帖子标题」 ```原本 首页/帖子板块 ``` ```插件 首页/帖子标题 // 帖子标题会显示为灰色 - 不
    主楼
  • 质量报告

    插件质量报告

    插件:better-breadcrumb

    Hook功能范围循环使用频率文件读写修改系统表读写系统表读写自己的表
    page.before_render全站页面输出前否5----
    page.footer全站页面页脚否5----
    page.head全站页面 head否5----

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

    数据字典

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

    #1
  • mingmeo

    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
    #2
  • 350

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

    🔒 安全问题

    1. 反射型 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 注入(高危)。

    #3
  • mingmeo

    版本 1.1.0 更新:

    v1.1.0

    • 修复安全性问题

    此版本提供了重要安全性修复,建议所有已安装用户更新

    #4
  • 350

    🔍 复核报告(v1.1.0,回应此前审查)· @banming

    ✅ 已确认修复

    1. 反射型 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 已修复,插件干净。

    #5
  • 399

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

    插件:更好的面包屑(better-breadcrumb)v1.1.0

    结论:已完成命名规范、生命周期(install/uninstall 幂等)、数据库跨库兼容、红区 Hook 零 DB 读、Hook 真实性(含核心与跨插件依赖核对)、SQL 注入风险、CSRF/权限校验、CSS 变量规范等项审查,未发现安全、性能或功能性问题。

    #6

发表回复

登录后回复