Должны ли папки плагинов включать пустой файл index.php?


16

Сам WordPress в wp-contentпапке содержит пустой PHP-файл, который выглядит следующим образом.

<?php
// Silence is golden.
?>

Должны ли плагины включать в себя такой пустой файл, чтобы люди не могли просматривать содержимое каталога? А как насчет дополнительных папок в темах - как includesкаталог?


1
да, это, наверное, хорошая идея. Никогда не понимал, почему WP не имеет Options –Indexesв комплекте htaccess, поэтому эти файлы не
— понадобятся

Ответы:


17

Нет, они не должны. Если плагин имеет уязвимости только потому, что кто-то может увидеть его структуру каталогов, он поврежден. Эти ошибки должны быть исправлены.
Безопасность через неизвестность - это ошибка для себя.

Владелец сайта может разрешить или запретить просмотр каталогов.

Вторая проблема заключается в производительности: WordPress сканирует все файлы PHP в корневой директории плагина, чтобы найти заголовки плагина. Это позволяет вам иметь несколько плагинов в одном каталоге, например /wp-content/plugins/wpse-examples/.

Это также означает, что неиспользуемые PHP-файлы в этом каталоге тратят впустую время и память, когда WordPress ищет плагины. Один файл не принесет большого вреда, но представьте, что это становится обычной практикой. Вы создаете реальную проблему в попытке исправить вымышленное.


2
«Владелец сайта может разрешить или запретить просмотр каталогов». Это, наверное, ключевой момент.
— chrisguitarguy

и мой главный вопрос: почему не записаны основные файлы плагинов index.php? это может быть оптимальным обходным
— путем

10

Я собираюсь сказать ДА. Безопасность через неизвестность работает, если вы более неясны, чем ваши соседи :) (шучу, но в этом есть доля правды).

Реальность такова, что боты / сканеры теперь компилируют списки плагинов прямо с wordpress.org и сканируют URL-адрес плагина напрямую, считывая отпечатки пальцев для известных эксплойтов и сохраняя информацию в базе данных для справки.

Итак, какой из них вы бы предпочли: бот не может собрать информацию о вашей установке или оставить его на усмотрение автора плагина, чтобы убедиться, что вы в безопасности. Как насчет обоих.

пс. Кроме того, в прошлом году было зарегистрировано 186 эксплойтов из плагинов wordpress.org (* сообщается ...).


1
Сканеры эксплойтов не проверяют, существует ли плагин. Они пытаются запустить эксплойт во время первого запроса. Пустое index.phpничего не защитит, вы просто получите ложное чувство безопасности.
— fuxia

Но они делают, например, wp-scan (один из многих), снимающий отпечатки с более чем 2200 плагинов, и использует приличную идентификацию для обнаружения версий (размер файла, добавления файла и т. Д.)
— Wyck

Я очистил десятки взломанных сайтов WordPress. Почти всегда первый запрос был настоящей атакой. Это вполне разумно: зачем тратить время на детальное сканирование, если вы можете проверить уязвимость в первом запросе? Отследите свои 404, чтобы увидеть это. :)
— fuxia

1
Я согласен, это должно быть до конечного пользователя, а не автора. Но я тоже не думаю, что это больно. Я просто хотел добавить контрапункт, так как вы сказали «нет».
— Вик

1
пометил этот как принятый из-за обсуждения комментария!
— chrisguitarguy

1

Поскольку ядро ​​WordPress делает это, для плагинов имеет смысл следовать их примеру. Хотя все это может быть защищено с помощью различных настроек на стороне сервера, это не помешает иметь настройки по умолчанию (вероятно, почему ядро ​​WordPress делает это).


0

Как указала fuxia, существует недостаток производительности, связанный с наличием дополнительного .phpфайла, который WordPress сканирует на наличие плагинов. index.html, Вероятно , будет лучшим вариантом. Конечно, лучшим вариантом было бы запретить просмотр каталогов через веб-сервер.

А также, безопасность через неизвестность не годится.

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.