我处理图片上传的方式安全吗?



我处理图像上传的方式安全吗?有没有办法上传一个.php文件,或者其他一些可以以某种方式执行php代码的文件(即使攻击者在上传后知道实际的文件路径?

function random($longueur = 10)
{
return substr(str_shuffle(str_repeat($x='0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ', ceil($longueur/strlen($x)) )),1,$longueur);
} 
$random = random(5);
//POST DATA
$img_name = htmlspecialchars($_POST["img_name"]);
//IMAGE
mkdir('../../assets/images/'.$random.'/');
$target_dir = '../../assets/images/'.$random.'/';
$target_file = $target_dir . basename($_FILES["img_src"]["name"]);
$imageFileType = strtolower(pathinfo($target_file,PATHINFO_EXTENSION));
//ARRAY EXTENSION GOOD
$extension_autorisee = array('.png', '.jpg', '.jpeg', 'png', 'jpg', 'jpeg');
if (in_array($imageFileType, $extension_autorisee)){
//MOVE IMAGE
move_uploaded_file($_FILES["img_src"]["tmp_name"], $target_file);
$filename = $random."/".$_FILES['img_src']['name'];
}

它看起来相当安全,唯一的问题是它不检查MIME类型。我真的不知道您存储这些文件的目的是什么,大多数现代浏览器在收到嵌入了 HTML 的图像时只会抛出错误,但它仍然是需要研究的东西。

另外,我不是密码学专家,但您可能想研究该字符串的"随机性"。这可能是一个很好的资源。加密安全随机字符串函数 除此之外,它看起来还不错。

闪电编辑:我认为这种问题更适合 https://codereview.stackexchange.com/