Как is_uploaded_file () повышает безопасность?

Я понимаю, как функция работает против

$_FILES['nn']['tmp_name']

Это tmp_name создается php на сервере и не может (насколько я понимаю) манипулировать клиентом. В каком смысле функция is_uploaded_file () добавляет безопасность?

ИСХОДНЫЙ КОД:

/* {{{ proto bool is_uploaded_file(string path)
Check if file was created by rfc1867 upload */
PHP_FUNCTION(is_uploaded_file)
{
char *path;
size_t path_len;

if (!SG(rfc1867_uploaded_files)) {
RETURN_FALSE;
}

ZEND_PARSE_PARAMETERS_START(1, 1)
Z_PARAM_STRING(path, path_len)
ZEND_PARSE_PARAMETERS_END();

if (zend_hash_str_exists(SG(rfc1867_uploaded_files), path, path_len)) {
RETURN_TRUE;
} else {
RETURN_FALSE;
}
}

3

Решение

Это лучшая информация, которую я смог найти …

Согласно книге Крис Шифлетт «Essential PHP Security»:

Если ваш код использует tmp_name без проверки того, что это действительно загруженный файл (а не что-то вроде / etc / passwd), теоретический риск существует. Я называю это теоретическим риском, потому что не существует известного эксплойта, позволяющего злоумышленнику изменить имя tmp. Однако не позволяйте отсутствию эксплойта отговорить вас от реализации некоторых простых мер безопасности.

Однако имейте в виду, что это было опубликовано 20 октября 2005 года. Мне не известны какие-либо эксплойты, которые с тех пор появились, или каковы детали, связанные с «теоретическим» эксплойтом. Он также говорит об этом Вот.

Есть похожий вопрос на обмен стека безопасности для дальнейшего использования.

4

Другие решения

Это действительно в основном проверка работоспособности для вы, программист Нет ничего, что мог бы сделать пользователь («хакер»), tmp_name обратитесь к чему-либо, кроме только что загруженного файла. Однако в вашем коде вы можете передавать имена файлов сложными способами; избежать ошибки программирования в таких сценариях, is_uploaded_file дает вам инструмент, чтобы проверить, действительно ли вы работаете с файлом, который был только что загружен, или пытаетесь ли вы работать с каким-то другим файлом. В последнем случае, если ваш код ошибочно [при определенных обстоятельствах] работает с любой файл вместо только что загруженных файлов, злоумышленник может быть в состоянии использовать эту ошибку и получить доступ к файлам, которые они не должны.

1

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector