首页/安全/漏洞与攻击面速查/文件上传漏洞防护
本包目录(294 条)
漏洞基础与评分46 条
Web 漏洞原理与防护55 条
主机与服务风险面53 条扫描与验证方法50 条补丁与修复管理45 条暴露面收敛45 条

文件上传漏洞防护

文件上传的风险不在上传动作本身,而在文件被谁以什么权限解析或执行;防护组合为:类型白名单(扩展名加内容特征)、重命名存储、隔离目录、禁止解析执行。

漏洞与攻击面速查安全更新于 2026-10-12

服务端校验清单

服务端校验清单
1. 扩展名白名单(按业务需求列出,如 jpg/png/pdf)
2. 内容特征校验(图片解码验证、文件头魔数)
3. 重命名存储(UUID + 固定扩展名),不使用用户文件名
4. 存储目录禁止解析执行(服务器配置层)
5. 大小与数量限制,防止资源耗尽

图片内容校验示意(Python Pillow)

图片内容校验示意(Python Pillow)
from PIL import Image
img = Image.open(path)
img.verify()                                   # 校验是否为有效图片
if img.format not in ('JPEG', 'PNG', 'WEBP'):
    raise ValueError('unsupported image format')
MIME 类型(Content-Type)由客户端提供、可伪造,只能作为辅助信号,不能作为唯一依据。

易错点

  • 只查扩展名不查内容:图片文件中混入脚本内容可绕过扩展名检查
  • 上传目录放在 Web 根目录且允许解析:任何解析差异都会直接变成执行入口

数据来源与参考

  • OWASP File Upload Cheat Sheet
​‌‌​​‌​​​‌‌​‌‌‌‌​‌‌​​​‌‌​‌‌‌​​‌‌​​‌​‌‌‌​​‌‌‌​​​‌​‌‌​‌​​‌​‌‌‌​​​‌​‌‌​‌​​‌​‌‌​​​‌‌​‌‌‌​‌​​​‌‌​‌‌‌‌​​‌​‌‌‌​​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌​‌‌​‌