我有图片上传网站。有人在这里上传shell文件。 我的验证是: - 检查文件的mime(只有图像的mimes能够) - 检查getimagesize是否返回数组(通过is_array) 如果没有,错误。 而且,有人正在上传shell文件。请帮忙。 Thnkas很多!
小检查:
$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...
}
答案 0 :(得分:1)
你应该检查文件权限,不应该由php执行。 可以很容易地将数据存储在图像的栅格数据矩阵中(显然)。
看看这些无辜的水母:
Stackoverflow将我无辜的.BMP转换为.PNG
原始的.bmp可以在a friend's server找到。 如果你查看左下角,你会看到奇怪的像素,对应于像素数据中写入的ascii数据。
为了避免使用shell文件,你应该应用一个修改,它会改变图像的每个像素。
对我来说,转换(压缩)似乎是一个良好的开端。
祝你好运!