WAF 防护73 条

文件上传防护

对上传接口做类型、大小、内容检测,阻断伪装扩展名与含恶意代码的文件。

安全设备配置速查安全更新于 2026-10-13

上传接口为什么危险

文件上传是 Web 攻击最常见的入口之一:攻击者把可执行脚本伪装成图片或文档上传,再通过访问该文件获得控制权。防护的关键不是单纯拦文件名,而是组合校验——扩展名白名单、真实文件头、内容特征,再加上存储侧的兜底,让上传成功的文件即便可疑也无法被当作脚本执行。

基本信息

适用平台WAF 侧检测 + 应用服务端校验 + 存储侧权限控制,三层配合
检测项扩展名白名单、内容类型、文件头校验、恶意内容特征
处置动作阻断、隔离送检、告警记录
兜底措施上传目录禁止脚本执行、文件重命名存储、访问走独立域名

典型使用场景

  • 门户与 OA 的附件上传:业务必须支持多种格式,白名单要贴合真实业务
  • 图片与视频上传:需按文件头判断真实类型,防止图片马绕过扩展名校验
  • 大文件上传:走独立通道并限速,避免上传接口成为带宽与性能瓶颈
  • 多扩展名与解析差异:同时考虑中间件对 .php、.jsp、.phtml 一类后缀的不同处理
  • 事后追溯:留存上传日志与文件样本,便于回溯投放来源

防护与联动

防护与联动
1. 白名单允许的扩展名按业务实际最小化,不用黑名单思路
2. 校验文件头与内容类型,避免仅看扩展名或 Content-Type
3. 上传文件重命名存储到非 Web 可执行目录,访问经应用转发
4. 大文件上传单独通道并限制频率与并发
5. 可疑文件联动沙箱或人工审阅,命中记录进事件台账

校验层次对照

层次能拦什么容易被绕过的点
前端校验明显的错误格式抓包改包后完全失效
WAF 规则已知的恶意内容特征变形与编码绕过
服务端校验扩展名与内容类型不符中间件解析特性差异
存储权限上传文件被执行目录配置错误时兜底失效
上传目录禁止脚本执行是投入产出比最高的一条:即使检测被绕过,攻击者拿到了文件也无法执行。

易错点

  • 只靠前端校验扩展名,抓包改包即可绕过,必须服务端与 WAF 双重校验
  • 上传目录既可写又可执行,且运行用户权限过高,一旦绕过检测即等于拿下服务器
  • 只按黑名单拦 php 等后缀,忽略中间件对特殊后缀的解析差异,绕过后门依然可用
  • 上传与访问共用一个域名与目录,攻击者上传后可直接请求执行,缺少隔离层

数据来源与参考

  • OWASP 文件上传防护备忘
  • CWE-434(危险文件类型上传)
​‌‌​​‌​​​‌‌​‌‌‌‌​‌‌​​​‌‌​‌‌‌​​‌‌​​‌​‌‌‌​​‌‌‌​​​‌​‌‌​‌​​‌​‌‌‌​​​‌​‌‌​‌​​‌​‌‌​​​‌‌​‌‌‌​‌​​​‌‌​‌‌‌‌​​‌​‌‌‌​​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌​‌‌​‌