20260903删除功能事故与恢复说明.md

下载服务删除功能事故与恢复说明(2026-09-03)

一、事件经过

  1. 用户提出需求:给下载中心(8899)增加删除功能(含文件夹),且删除需有确认步骤。
  2. 我在 download-server.js 中实现了删除功能:
    • 前端:每行 🗑 删除按钮 + 确认弹窗(显示名称/类型/大小/文件数);
    • 服务端:DELETE 方法 + ?dry=1(统计不删)+ ?confirm=1(真正删除),递归删除文件夹。
  3. 事故:根目录守卫存在 bug——path.normalize(path.join(ROOT, '/')) 在 Node 中保留尾斜杠(.../dl-hub/ ≠ ROOT 字符串),守卫 target === ROOT || !target.startsWith(ROOT+sep) 被绕过。我在测试时对根路径直接发了 DELETE /?confirm=1,整个 dl-hub 目录树被递归删除。

二、数据恢复(已尽力抢救)

三、修复措施(已生效)

四、当前状态

五、教训

下载此文件