2026-06-07 插件远程中心停用与 ZIP 解压链路加固
本次确认 plugin.xiuno.com 插件站点已不可用,因此停用后台插件中心、远程下载、购买轮询和远程升级链路,仅保留本地插件管理能力。同时保留 ZIP 解压路径校验,避免其它调用场景出现 Zip Slip 风险。
主要改动:
- 停用插件中心入口
- 文件:admin/menu.conf.php
- 后台插件菜单只保留“本地插件”和“开发脚手架”,移除免费/收费插件入口。
- 文件:admin/route/plugin.php
official_fee、official_free、download、is_bought、upgrade 等远程相关动作统一返回插件中心已停用”。
- 本地插件管理不再合并远程数据
- 文件:model/plugin.func.php
- 插件列表固定为空,不再请求
plugin.xiuno.com。
- 本地插件详情不再拼接图标、截图、星级、版本和远程升级状态。
have_upgrade 固定为 FALSE,避免后台显示不可用的远程升级入口。
- 清理后台插件远程 UI
- 文件:admin/view/htm/plugin_list.htm
- 插件列表改为纯本地管理视图,仅显示体检、设置、安装、启用、禁用、卸载等本地操作。
- 文件:admin/view/htm/plugin_read.htm
- 移除支付轮询和远程升级按钮。
- 补齐本地插件状态变更 CSRF 校验
- 文件:admin/route/plugin.php
install 和 enable 路由补充 admin_csrf_check_token(),与 unstall、disable 保持一致。
download 和 upgrade 远程动作保持停用提示,避免直接访问旧 URL 触发远程下载或升级逻辑。
- ZIP 解压保留 Zip Slip 防护
- 文件:xiunophp/xn_zip.func.php
- 解压前遍历所有 zip entry,禁止空文件名、NUL 字节、反斜杠、绝对路径、Windows 盘符路径和
.. 路径穿越。
- 只有全部 entry 通过校验后才调用
ZipArchive::extractTo()。
- 无
ZipArchive 扩展时不再回退到旧解压实现,避免绕过 entry 预检。
欢迎大家加入QQ交流群:785017513