纵深防御——文件上传漏洞

1.核心思想

  • 前端检测:主要用于提升用户体验,快速给出反馈,减少无效请求对服务器的压力。绝对不可作为安全依赖,因为可以轻易被绕过。

  • 后端检测:这是真正的安全防线。所有文件上传的合法性、安全性校验都必须在服务器端进行。

2.前端检测方案

2.1 文件扩展名检测

  • 原理 :检查用户选择文件的扩展名(如 .jpg, .png, .php)。

  • 绕过方式 :使用Burp Suite、Postman等工具截断HTTP请求,修改filename后缀后发送(比如修改图片文件的后缀为php)。

2.2 MIME类型检测

  • 原理 :检查浏览器提供的文件MIME类型(如 image/jpeg, text/php)。

  • 绕过方式 :使用代理工具直接修改请求头中的Content-Type字段。

2.3 文件大小检测

  • 原理:防止用户上传过大的文件,影响服务器性能和存储。此检查在后端也必须进行,因为前端可绕过。

总之,前端检测非常脆弱,攻击者只需拦截HTTP请求并修改其内容即可轻松绕过。

3.后端检测方案

3.1 白名单文件扩展名检测

  • 原理 :这是最有效的检测方式,只允许明确安全的扩展名,拒绝其他所有类型。绝对不要使用黑名单(如禁止php, asp, jsp),因为总有漏网之鱼(如.phtml, .phps, .php5等)。

3.2 MIME类型检测

  • 原理 :检查HTTP请求头中的Content-Type。但此值也可被伪造,需与其他检测结合。

3.3 文件内容检测

  • 原理:检查文件的魔数(Magic Number),即文件头的特定字节,这是文件类型的真实标识,不受文件名和MIME类型欺骗的影响。但是也会被伪装,需与其他检测结合。

3.4 文件重命名

  • 原理:切断用户控制的文件名与服务器最终存储的文件名之间的关联,使攻击者无法预测或直接访问他上传的恶意文件。

3.5 存储路径安全

  • 原理:将上传文件的最终存储目录硬编码在程序中,不与用户输入拼接;或者确保该目录不在Web根目录下;或者没有执行脚本的权限。

3.6 文件大小限制

  • 原理:限制上传文件的体积,防止DoS攻击,避免磁盘被填满。

3.7 图像文件二次渲染/压缩

  • 原理:针对图片上传,使用GD库或ImageMagick等对图片进行重新采样、压缩或缩放。这个过程会剥离嵌入在图片中的恶意代码,生成一个"干净"的新图片。
相关推荐
jenchoi4134 小时前
【2025-11-02】软件供应链安全日报:最新漏洞预警与投毒预警情报汇总
安全·web安全·网络安全
上海云盾-高防顾问4 小时前
什么是端口管理?网络安全的关键环节
安全·web安全
风语者日志6 小时前
[LitCTF 2023]作业管理系统
前端·网络·安全·web安全·ctf
Never_z&y7 小时前
攻防世界-cat_cat_new(任意文件读取、Linux敏感文件、flask-session伪造)
web安全
一只鹿鹿鹿8 小时前
系统安全设计方案书(Word)
开发语言·人工智能·web安全·需求分析·软件系统
犬大犬小9 小时前
什么是 webSocket?攻击面、安全风险与测试要点
安全·web安全·安全性测试
岛屿旅人13 小时前
英国国防部推进本土化开放架构建设
网络·人工智能·安全·web安全·架构
介一安全1 天前
【Web安全】泛微OA框架SRC高频漏洞分析总结
web安全·网络安全·安全性测试
jenchoi4131 天前
【2025-11-01】软件供应链安全日报:最新漏洞预警与投毒预警情报汇总
网络·安全·web安全·网络安全
沐矢羽1 天前
upload文件上传漏洞浅析
学习·web安全·网络安全·文件上传·top10