文件上传
文件上传的危险点在于:用户把内容交给服务器保存,而服务器可能又把它当成网页、脚本、图片、压缩包或业务数据处理。
上传流程看什么
| 环节 | 关注点 |
|---|---|
| 前端限制 | 是否只是浏览器限制后缀和大小 |
| 服务端校验 | 是否检查类型、内容、尺寸、结构 |
| 存储位置 | 是否在可执行目录或 Web 根目录 |
| 文件命名 | 是否保留原始文件名,是否可覆盖 |
| 访问方式 | 是否能直接访问、下载、预览 |
| 后续处理 | 是否会解压、解析、转码、入库 |
常见风险
上传脚本文件可能导致代码执行;上传特殊图片、文档或压缩包可能触发解析器漏洞;保留原文件名可能造成 XSS、路径问题或覆盖文件;公开可访问的附件可能泄露隐私数据。
防护要点
服务端按业务白名单校验文件类型,使用随机文件名,存储到不可执行目录。图片等文件重新编码后再提供访问,附件下载统一走鉴权接口,压缩包解压要限制层级、数量、大小和路径。