Intereting Posts
Ссылка на следующие / предыдущие сообщения в индексной петле в той же категории? Почему я должен использовать «Организовать мои закачки в месячные и годные папки»? (Против / Доводы) Вызов функции в обработчике коротких кодов WordPress Удалить «показать кнопки совместного доступа» метабокс JetPack из пользовательского типа сообщения Как установить стиль перед style.css Отключение перенаправления HTTPS для миграции Удаление неиспользуемых кодов WP-кодов на странице html Преобразовать избранные изображения в «изображения продукта» Добавить пользовательский URL для показа перейдите на главную страницу, когда я выбираю значение по умолчанию в поле выбора Как отобразить самый популярный пост по количеству просмотров в WordPress? Пользовательская постоянная ссылка для каждого сообщения Скопируйте файл из плагина в каталог темы Вытянуть изображение в пользовательском меню URL-адрес выхода из системы

Почему двойные периоды («..») недействительны в имени файла WordPress?

ms-files.php содержит следующий фрагмент кода:

 $file = rtrim( BLOGUPLOADDIR, '/' ) . '/' . str_replace( '..', '', $_GET[ 'file' ] ); if ( !is_file( $file ) ) { status_header( 404 ); die( '404 — File not found.' ); } 

Этот код определяет, можно ли найти файл. Тем не менее, он делает то, что я нахожу … Нечетный. Он удаляет все двойные периоды («..») из строки. Обычно это не имеет значения, но у нас есть пользователи, загружающие файлы с двумя периодами подряд (вздох), заставляя эту часть кода неправильно сообщать код 404 (не найден).

Я испытываю соблазн устранить странную проблему с двойным периодом удаления этого кода, но я боюсь, что я нечаянно сломаю что-то еще. Почему эта функциональность присутствует, поскольку она закодирована?

Благодаря! 🙂

Изменить: чтобы быть ясным, казалось бы, что два периода не являются недопустимыми в WordPress, но они не могут быть обработаны этим битом кода … Таким образом, они не являются недействительными, но при доступе через этот механизм, 404 сообщается неправильно.

Похоже, это дефект. Иш.

Как упоминалось в @s_ha_dum, это предотвращает атаку обхода каталога. Тем не менее, WordPress Media Library с радостью позволит вам загружать файл с двумя или более периодами в строке, даже если ms-files.php откажется его обслуживать.

Итак, ничто не технически «сломан», но это, безусловно, не идеально. Для предотвращения этого есть патч, но похоже, что он никогда не добавлялся в ядро:

https://core.trac.wordpress.org/attachment/ticket/16189/check%20for%20double%20periods.diff

Дополнительная информация об этом дефекте: https://core.trac.wordpress.org/ticket/12756