У меня есть следующий код для загрузки файла jquery и изменения размера изображения. В одном из моих предыдущих постов другой пользователь сказал, что это угроза безопасности. Вот код:
<?php
$output_dir = "../images/img_user/";
if(isset($_FILES["file"]) && !empty($_FILES["file"]))
{
$ret = array();
$error =$_FILES["file"]["error"];
if(!is_array($_FILES["file"]["name"])) //single file
{
$fileName = $_FILES["file"]["name"];
move_uploaded_file($_FILES["file"]["tmp_name"],$output_dir.$fileName);
//img resize
require 'imgclass.php';
$resize_image = new Zebra_Image();
$resize_image->preserve_aspect_ratio = true;
$resize_image->source_path = $output_dir.$fileName;
$ext = trim("$fileName");
$resize_image->target_path = '../images/img_user/'.$ext;
if (!$resize_image->resize(128, 128, ZEBRA_IMAGE_NOT_BOXED, 1))
{
// if there was an error, let's see what the error is about
switch ($resize_image->error) {
case 1:
$custom_error= array();
$custom_error['jquery-upload-file-error']="Image file could not be found!";
echo json_encode($custom_error);
die();
case 2:
$custom_error= array();
$custom_error['jquery-upload-file-error']="Image file is not readable!";
echo json_encode($custom_error);
die();
case 3:
$custom_error= array();
$custom_error['jquery-upload-file-error']="Could not write target file!";
echo json_encode($custom_error);
die();
case 4:
$custom_error= array();
$custom_error['jquery-upload-file-error']="Unsupported image file format!";
echo json_encode($custom_error);
die();
case 5:
$custom_error= array();
$custom_error['jquery-upload-file-error']="Unsupported target file format!";
echo json_encode($custom_error);
die();
case 6:
$custom_error= array();
$custom_error['jquery-upload-file-error']="GD library version does not support target file format!";
echo json_encode($custom_error);
die();
case 7:
$custom_error= array();
$custom_error['jquery-upload-file-error']="GD library is not installed!";
echo json_encode($custom_error);
die();
}//end switch
}//end resize error
//end resize
$ret[]= $fileName;
}
echo json_encode($ret);
}
?>
Я использую следующую библиотеку:
http://hayageek.com/docs/jquery-upload-file.php
Я создал файл htaccess для предотвращения выполнения кода в папке загрузки. Разрешение папки — 755, а файла chmod — 640.
Другой пользователь Xorifelse прокомментировал как:
Кроме того, риски безопасности с move_uploaded_file($_FILES["file"]["tmp_name"],$output_dir.$fileName);
также примерно с 2000 года. 17 лет устарели меры безопасности. Да, вы позволяете нам загружать php файлы на ваш веб-сервер без каких-либо усилий. «
Если да, то какова проблема безопасности и как я могу ее предотвратить? Я начинающий программист.
Задача ещё не решена.
Других решений пока нет …