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. В каком случае будет выведена эта строка?
Заранее спасибо!
  • Вопрос задан
  • 67 просмотров
Пригласить эксперта
Ответы на вопрос 2
@BorisKorobkov
Web developer
Эта проверка:

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

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

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

Войти через TM ID
Похожие вопросы
от 2 000 до 4 000 usd.
Duotek Москва
До 120 000 руб.
HTML Academy Санкт-Петербург
от 120 000 до 130 000 руб.
20 авг. 2018, в 19:05
3000 руб./за проект
20 авг. 2018, в 18:36
500 руб./в час
20 авг. 2018, в 18:25
10000 руб./за проект