validate_file()
Перевіряє переданий рядок, чи він правильним шляхом до файлу (імені файлу). Якщо перевірку пройдено, поверне 0; якщо ні, поверне: 1, 2 чи 3.
Використовується для запобігання Directory traversal атак .
Основа для:
wp_get_active_and_valid_plugins()
wp_get_active_and_valid_plugins()
1 раз – 0.000018 сек
(дуже швидко) | 50000 разів – 0.01 сек
(швидкість світла) |
PHP 7.1.2, WP 4.7.5
(дуже швидко) | 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 | Введено. |