На моём ресурсе пользователи имеют возможность загрузки некоторых изображений (например аватарок).
Чтобы избежать попадание на сервер вредоносного кода, я использую следующую функцию:
if ($_FILES['avatar']['error'] == UPLOAD_ERR_OK && ($_FILES['avatar']['type'] == 'image/png' || $_FILES['avatar']['type'] == 'image/jpeg' || $_FILES['avatar']['type'] == 'image/jpg')){
//Проверка содержания файла
$info = getimagesize($_FILES['avatar']['tmp_name']);
if ($info['mime'] == 'image/png' || $info['mime'] == 'image/jpeg' || $info['mime'] == 'image/jpg'){
//Проверка на недопустимые расширения
$blacklist = array('.php','.phtml','.php3','.php4','.html','.htm');
$coincedents = 0;
foreach ($blacklist as $item){
if (preg_match("/$item\$/i", $_FILES['avatar']['name'])){ $coincedents++; }
}
if ($coincedents == 0){
//Проверка пройдена
}
}
}
Достаточно ли её для защиты веб-приложения?