0

我有图片上传网站。有人在这里上传 shell 文件。我的验证是: - 检查文件的 mime(只有图像的 mime 能够) - 检查 getimagesize 是否返回数组(通过 is_array) 如果不是,则错误。而且,有人正在上传 shell 文件。请帮忙。非常感谢!

小检查:

$ext = ($_FILES['files']['type']); 

if (($ext != "image/jpeg") && ($ext != "image/pjpeg") && ($ext !="image/png") && ($ext != "image/gif") && ($ext != "image/bmp") && ($ext != "image/x-icon") && (!is_array(getimagesize($_FILES['files']['tmp_name'])))) {

    // Show error
} else {
    // Keep upload...
}
4

1 回答 1

1

您应该检查文件权限,不应该由 php.ini 执行。将数据存储在图像的栅格数据矩阵中很容易(显然)。

看看这些无辜的水母:

无辜的水母

Stackoverflow 将我无辜的 .BMP 转换为 .PNG

原始 .bmp 可以在朋友的服务器上找到。如果你看左下角,你会看到奇怪的像素,对应于像素数据中写入的 ascii 数据。

为了避免使用 shell 文件,您应该应用修改来改变图像的每个像素。

对我来说,转换(压缩)似乎是一个好的开始。

祝你好运 !

于 2013-05-20T00:38:43.280 回答