回答(1)
已采纳最佳答案-
2026-10-25 回答 最佳答案
两条一起做才安全:
- 文件放到 Web 不可达目录:现在上传的附件统一落
runtime/secure/(付费资源在runtime/secure/paid/),站点的 nginx/.htaccess/内置路由三层都 deny 这个目录,直链直接 403; - 一律走受控路由下载:普通附件走
/attachment/{id},付费资源走/resource/file/{id}/{index}?currency=points,由 PHP 校验登录与积分后再吐文件。
额外两点加固:
- 文件名带会员识别码:下载时文件名形如
12-1869FF38.zip,识别码是该会员独有的 HMAC,一旦外传可溯源到账号; - 压缩包按附件 ID 重命名落盘,原始文件名不外露。
自查方法:拿一个附件 id,浏览器直接访问
/runtime/secure/...应该是 403/404,访问/attachment/{id}才返回文件。 - 文件放到 Web 不可达目录:现在上传的附件统一落
写回答
该问题已解决,不再接受新的采纳。