上传安全涉及接收、验证、保存与下载多个环节。仅限制扩展名,或者只让前端判断文件大小,无法约束直接发送到接口的请求。不同文件用途也需要不同许可与访问方式。

定义业务实际需要的文件

先列允许类型、大小、数量与使用人员。头像、产品图片和内部文档不能混用无约束上传入口。扩展名和客户端声明的类型都可能不可信,应结合适用的内容检查;解析器及图片处理库也要维护更新。

保存时控制名称与执行

文件名由系统生成可靠标识,原始名称只用于经过安全处理的展示。用户不指定最终存储路径,不允许覆盖程序或其他人的文件。上传区禁止执行脚本;敏感资料优先放在非公开存储,通过受控下载接口提供。

  • 服务端验证类型、大小和业务许可。
  • 将展示名称与内部文件标识分开。
  • 下载时再次检查用户与文件权限。
  • 失败上传及废弃文件有清理规则。

要检查哪些异常样本

使用项目授权范围内的测试,验证错误类型、超大文件、重复名称与无权下载。不要在生产随意运行可疑脚本。视业务与文件格式增加适用的病毒检查或内容处理,任何单一检测都不应被当作绝对保证。

避免错误处理再次泄露信息

接口错误应说明用户可以怎样处理,但不返回完整内部路径、秘密配置或堆栈。普通日志只记录必要标识与状态,敏感文档不进入开放调试数据。发布新上传功能后,同时检查存储权限、下载入口和容量监控。

参考:OWASP文件上传防护。

延伸阅读:网站文件上传与路径安全:类型、存储和访问