文件上传漏洞是指上传了恶意脚本,然后通过执行恶意脚本来发送 hack 攻击,是非常常见的攻击手段,同时危害特别大。那么该如何防范,步骤如下

  1. 前端检查

检查上传文件的后缀是否在后缀白名单中。作用不大,但是还是要做

  1. 后缀检查

当文件上传到后端时,需要再一次检查文件后缀是否在后缀白名单中。依旧是作用不大,但是还是要做

  1. 检查 MIME

MIME 也就是文件类型,浏览器上传的时候,都会通过 Content-Type 将 MIME 传过来,但是由于 hacker 一般会使用工具进行上传,比如 Burp Suite,所以 Content-Type 是可以被篡改的。所以不单单要检查 Content-Type 是否在 MIME 白名单中,还要检查上传过来的文件的 MIME。在 PHP 中可以通过 Fileinfo 获取文件的 MIME

$finfo = new finfo(FILEINFO_MIME_TYPE);
$mimeType = $finfo->file('./demo.png');
echo $mimeType . "\n";
// image/png

我们来假设一个如果没检查后缀和 MIME 而导致被上传了恶意 PHP 脚本

// hacker.php
<?php

@eval($_GET['apply']);

一般会用 $_POST 多点,但是为了演示,我们这里使用 $_GET。启动服务

php -S 127.0.0.1:9000

在 URL 地址栏输入

http://127.0.0.1:9000/hacker.php?apply=echo%20%22Hello%20World%22;

然后你就能在浏览器上看到 Hello World

  1. 静态资源访问后缀白名单
  2. 静态资源目录不给可执行权限

这个主要是防止万一被上传了可执行文件的情况,防不了 PHP 脚本这类的


helbing
131 声望7 粉丝

« 上一篇
CSRF