Загрузка изображений на сервер. Безопасен ли код?

198
20 апреля 2022, 11:30

Написал код загрузки изображения на сервер - надежен ли он или можно как то загрузить вредоносный код. Может есть советы какие нибудь? PHP

if (isset($_FILES)) {
  $upload_dir = './images/'; // Путь куда будут сохраняться изображения
  $max_size = 5242880; // Макс.размер файла
  $allow_format = array('jpg', 'jpeg', 'png'); // Разрешенные форматы файлов
  $allow_type = array('image/jpg', 'image/jpeg', 'image/png'); // Разрешенные Content Type
  // Данные файла
  $file_tpm = $_FILES['file']['tmp_name'];
  $file_name = $_FILES['file']['name'];
  $file_size = $_FILES['file']['size'];
  $file_type = $_FILES['file']['type'];
  $file_name_cmps = explode(".", $file_name);
  $file_extension = strtolower(end($file_name_cmps));
  $file_info = getimagesize($file_tpm);
  $file_mime = $file_info['mime'];
  if ($file_info) {
    // Проверяем Content Type
    if (in_array($file_mime, $allow_type)) {
      // Проверяем расширение файла
      if (in_array($file_extension, $allow_format)) {
        // Проверяем размер файла
        if ($file_size <= $max_size) {
          $new_filename = md5(trim($file_name) . md5(random_hash(20))) . '.' . $file_extension;
          move_uploaded_file($file_tpm, $upload_dir . $new_filename);
          echo 'Изображение успешно загружено';
          echo '<br>';
          echo '<img src="' . $upload_dir . $new_filename . '" alt="Avatar" />';
        } else {
          echo 'Изображение слишком большое';
        }
      } else {
        echo "Формат изображения не допустим $file_extension";
      }
    } else {
      echo "Неверный Type";
    }
  } else {
    echo "Вы загрузили не изображение";
  }
}
READ ALSO
Рефакторинг старого кода php

Рефакторинг старого кода php

Возникла необходимость рефакторинга довольно старого кода на php, написанного примерно в 2005м годуКод запускается на php 5

94
Записать полученный ответ в формате JSON в MySQL

Записать полученный ответ в формате JSON в MySQL

Всем приветЕсть сайт на Wordpres

73
Как изучить yii2?

Как изучить yii2?

друзьяПол года назад решил зайти в веб, начал учить html/css и php

83
Получить текст из изображения PHP

Получить текст из изображения PHP

Подскажите пожалуйста, нужно реализовать извлечение текста из картинок(png, jpg)Как на сервисе https://img2txt

99