76c9edd4be2d1b7961fea42bd0e5a31e120adfd8
素材库要从「只传图片」放开到文档与音视频,后端必须先有一道类型防线: /api/file/upload 此前对文件类型零校验,任意文件都能落到公开可读目录。 - UploadRules:image/* 按探测 MIME 放行(历史头像/图标格式多,不做后缀白名单); 其余按后缀白名单(pdf/doc/docx/xls/xlsx/ppt/pptx/txt/md/csv、 mp3/wav/m4a/aac、mp4/mov/webm),再用危险 MIME 黑名单兜住 exe 改名。 不用「扩展名必须等于探测类型」的严格比对:docx/xlsx/pptx 经 Tika 常得到 application/zip,md/csv 得到 text/plain,严格比对会误杀正常办公文档。 - FileStorageService.store 落盘后校验,本地分支失败删除刚写的文件,不留孤儿。 - FileController 单独捕获 UploadRejectedException,把原因原样回给前端。 - FileRecordParam.mediaCategory + Mapper 展开成 image/video/audio/doc 四类条件: 「文档」在 MIME 里没有统一前缀,只能落到 application/% | text/%。 设计取舍见 docs/adr/0004(本仓库外,tuanwei-home)。
Description
No description provided
Languages
Java
99.5%
Shell
0.5%