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

16

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

<?php
// Silence is golden.
?>

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

chrisguitarguy
источник
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 делает это).

BFTrick
источник
0

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

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

Алекс Н
источник