JackShcherbakov
@JackShcherbakov

Каким образом функция move_uploaded_file() помогает защититься от атак с помощью файловой загрузки?

Здравствуйте! В документации php нашел вот такой пример:
<?php
// В PHP 4.1.0 и более ранних версиях следует использовать $HTTP_POST_FILES
// вместо $_FILES.

$uploaddir = '/var/www/uploads/';
$uploadfile = $uploaddir . basename($_FILES['userfile']['name']);

echo '<pre>';
if (move_uploaded_file($_FILES['userfile']['tmp_name'], $uploadfile)) {
    echo "Файл корректен и был успешно загружен.\n";
} else {
    echo "Возможная атака с помощью файловой загрузки!\n";
}

echo 'Некоторая отладочная информация:';
print_r($_FILES);
print "</pre>";

?>

Не совсем понятна строка:
echo "Возможная атака с помощью файловой загрузки!\n";

Каким образом эта функция помогает защищаться? Из документации понял, что эта функция проверяет, является ли файл filename загруженным на сервер (переданным по протоколу HTTP POST). Если файл действительно загружен на сервер, он будет перемещён в место, указанное в аргументе destination. Ведь хакер тоже может передать файл по HTTP POST. В каком случае будет выведена эта строка?
Заранее спасибо!
  • Вопрос задан
  • 449 просмотров
Пригласить эксперта
Ответы на вопрос 2
@BorisKorobkov Куратор тега PHP
Web developer
Эта проверка:

- защищает от переноса твоего конфига с паролями к БД в папку для скачивания. Например, при /upload.php?$_FILES[userfile][tmp_name]=../private/config.php&$_FILES[userfile]['name]=public_config.txt

- не защищает от загрузки php-скрипта вместо jpg-файла. Для этого нужны другие проверки и защиты
Ответ написан
Комментировать
Sanasol
@Sanasol Куратор тега PHP
нельзя просто так взять и загуглить ошибку
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы