validate_file()
Проверяет переданную строку, является ли она правильным путем к файлу (имени файла). Если проверка пройдена, вернет 0; если нет, вернет: 1, 2 или 3.
Используется для предотвращения Directory traversal атак.
Основа для: wp_get_active_and_valid_plugins()
1 раз — 0.000018 сек (очень быстро) | 50000 раз — 0.01 сек (скорость света) | PHP 7.1.2, WP 4.7.5
Хуков нет.
Возвращает
int
.
- 0 - проверка пройдена;
- 1 - означает что файл содержит
../
(Перейти в родительскую директорию). Что, переданное команде, может позволить читать/изменять файлы в родительских директориях — что неприемлемо с точки зрения безопасности; - 2 - означает что $file содержит
:
вторым символом (Диск для Windows; абсолютный путь). Неприемлемо по тем же причинам; - 3 - означает что файла нет в списке допустимых, указанных в параметре $allowed_files.
Использование
validate_file( $file, $allowed_files );
- $file(строка) (обязательный)
- Путь до файла.
- $allowed_files(массив)
- Список допустимых файлов, которым должна соответствовать переменная $file.
По умолчанию: ''
Примеры
#1 Демонстрация проверок пути файлов
Путь, который пройдет проверку:
$path = 'uploads/2012/12/my_image.jpg'; echo validate_file( $path ); // выведет 0 (допустимый путь)
Путь, который не пройдет проверку:
$path = '../../wp-content/uploads/2012/12/my_image.jpg'; echo validate_file( $path ); // выведет 1 (недоступный путь)
Заметки
Будьте внимательны при проверке возвращаемого результата, т.к. если проверка пройдена, то функция вернет 0, а если не пройдена то вернет число. Поэтому проверять стоит как-то так:
if( validate_file( $file ) === 0 ) echo 'проверка пройдена'; else echo 'проверка не пройдена';
Список изменений
С версии 1.2.0 | Введена. |