[attachment_upload]附件上传热
- bbs1org2026-08-03
插件质量报告
插件:
attachment_uploadHook 功能范围 循环 使用频率 文件读写 修改系统表 读写系统表 读写自己的表 reply.after_save 回帖保存后 否 3 - - - - topic.after_save 主题保存后 否 3 - - - - topic.before_save 主题发布/编辑表单提交 回调内(文件批处理) 3 读写 app_attachments app_users, app_attachments - attachment.uploader 主题/回帖编辑表单附件控件 否 2 - - - - reply.form_extra 回帖编辑表单 否 2 - - - - request.csrf_exempt 请求 CSRF 豁免检查 否 2 - - - - 颜色说明:黄色表示有数据读写,红色表示 Hook 在系统循环中执行,浅蓝色表示有文件写入。“列表跳过”表示回调在列表路径会提前返回,“回调内”表示操作位于回调自身或其帮助函数的循环体内。“文件批处理”表示逐个处理用户一次提交的文件,属于必要操作,不标记修正。只有操作实际处于需要优化的循环路径时,才会标记“修正❗️”。
数据字典
未检测到插件数据表声明。
这个附件要是能设置允许的格式就好
- bbs1org2026-08-14
版本 1.0.12 更新:
增加文件后缀白名单设置。多个后缀以逗号分隔,留空不限制;前端选择器过滤且服务端强制校验 增加一个用户组限制呗 限定用户组可使用
- bbs1org2026-08-16
这个问题修复一下:fileinfo要是安装不了,粘贴图片一直有问题,加下面的代码,兼容代码
// 服务器没装 fileinfo 扩展时(上面两个函数都由它提供),用 getimagesize 兜底。
$info = @getimagesize($path);🔍 插件审查报告(对照《AI 开发规则》与开发者文档)
🔒 安全问题
- 【高】SVG 文件以
.svg后缀落盘并被 Web 直出,存在存储型 XSS 风险。plugin.php:127 白名单含svg,plugin.php:138 的return $ext . (attachment_upload_allowed_ext($ext) ? '' : '1');使 svg 保留原后缀,最终存为app/upload/<hash前2位>/<hash>.svg;而图片走 plugin.php:63-65 的asset_url('app/upload/…')直出(plugin.php:224),说明 upload 目录可被浏览器直接访问。攻击者上传内嵌<script>的 SVG 即可在站内同源执行脚本。建议:svg 不保留原后缀(强制.svg1)或移出白名单,附件统一走 download 路由并加X-Content-Type-Options: nosniff与 attachment 处置。
- 【中】plugin.php:307-310 在
ajax_request()时豁免attachment_upload上传接口的 CSRF 校验,只依赖可伪造的X-Requested-With头;前端 plugin.php:374 本已携带_csrf却未校验。建议移除豁免,走核心默认 CSRF 校验。
⚡ 性能问题
未发现明显问题。
🐛 功能/规范缺陷
- plugin.php:190 自定义 Hook
attachment.before_upload未加插件前缀,易与核心或其他插件冲突,建议改为attachment_upload.before_upload。 - plugin.php:303 Cookie 名
__attachment_upload_history_clear未加插件前缀,建议改为bbs1_attachment_upload_history_clear。
✅ 修复优先级
- 修 SVG 后缀直出(高);2. 撤销 CSRF 豁免(中);3. 补 Hook 与 Cookie 前缀(低)。
- 【高】SVG 文件以
“app/upload”里如果有“孤儿文件”是怎么处理的?
- bbs1org2026-08-21
不是这个,就是用户在发消息并上传了附件,后来用户删除了该消息,然后附件里的文件好像没有被删除,而且也没有被引用过从而成为了“孤儿”,这样的文件还躺在“app/upload”我觉得有点浪费,好像没有个安全接口管理它,还有问了ai说附件文件也不太建议保存在数据库里
- bbs1org2026-08-21
🔍 插件审查报告(AI 自动审查,对照《AI 开发规则》与开发者文档;本插件未被 8/18 楼上 350 的报告覆盖,属独立首次审查)
插件:attachment_upload v1.0.12
🔒 安全问题
未发现明显问题。上传文件按内容检测 MIME 类型(非仅信任后缀),非图片类型统一中性化扩展名存盘;下载走独立路由并设置 nosniff,未见路径穿越。⚡ 性能问题
未发现明显问题。🐛 功能/规范缺陷
私有 Hook 未加插件前缀:本插件在上传流程 attachment_upload_markdown()(plugin.php 约190行)内自行定义并调用了扩展点 attachment.before_upload,供其它插件(如 user_review)在上传前做权限拦截,但该私有 Hook 未按规则加上自身插件 ID 前缀。规则要求私有 Hook 以插件 ID 开头,此处属于该情形。(附带说明:8/18 楼上 350 的报告曾在审查 user_review 插件时,误将 attachment.before_upload 判定为"核心不存在的无效 Hook",已在 user_review 主题帖的复核回帖中更正——该 Hook 实际由本插件定义,两插件同时启用时功能有效。)
✅ 修复优先级
低优先级规范项:建议将 attachment.before_upload 更名为带前缀的私有 Hook 名称(如 attachment_upload.before_upload),并同步更新监听方(如 user_review)的注册。- bbs1org2026-09-04
版本 1.0.13 更新:
环境检测(图片直接显示模式) - bbs1org2026-09-04
版本 1.0.13 更新:
增加预览 希望增加权限管理、希望增加webp转换(节省服务器压力)
- bbs1org2026-09-05
- bbs1org2026-09-06
版本 1.0.13 更新:
优化细节 - bbs1org2026-09-06
版本 1.0.14 更新:
提升版本号 - bbs1org2026-09-09
版本 1.0.15 更新:
增加五级信任等级体系权限设置支持 - bbs1org2026-09-12
版本 1.1.4 更新:
优化按钮位置 - bbs1org2026-09-17
版本 1.1.7 更新:
支持粘贴图片上传
