Закрываем листинг файлов FTP директорий сайта в браузере
Недавно столкнулся с вопросом отображения списка (листинга) файлов блога на FTP через браузер. Вопрос немного неоднозначный, поэтому решил собрать по нему разную информацию и заодно опубликовать пост. В частности расскажу о том, как можно закрыть просмотр списка файлов через htaccess. Для примера взят WordPress блог, хотя все это справедливо для любой другой CMS и обычных сайтов.
Итак, допустим у вас установлен плагин Simple Tags, и, если вы вдруг решите зайти по ссылке http://ваш_сайт/wp-content/plugins/simple-tags то, скорее всего, увидите там следующую картинку:
В браузере отобразится листинг с FTP, где показаны все файлы, что находятся в конкретном каталоге. Такая фишка будет срабатывать и для некоторых других созданных вами папок на хостинге. Если же зайти в какую-то базовую директорию WordPress, например, http://ваш_сайт/wp-content/plugins/ или http://ваш_сайт/wp-content/ то увидите там пустой экран. Все дело в том, что в этих каталогах имеется файл index.php. Для WP он содержит следующий код:
<?php // Silence is golden. ?> |
Логика работы веб-сервера следующая. Он заходит в конкретную директорию и ищет там (по умолчанию) index.html или index.php. Если их не находит, то отображает список всех файлов в каталоге.
Что в этом плохого? Во-первых, это определенная лазейка с точки зрения безопасности. Злоумышленник может получить информацию о наличии проблемных модулей на вашем сайте (будь то WordPress или другая CMS). К сожалению, далеко не все плагины идеально защищены, и просматривая список файлов на FTP можно определить используете ли вы какой-то дырявый модуль или нет. Во-вторых, через листинг можно легко получить доступ, например, ко всем картинам сайта и скачать их. Это может быть нехорошо, если вы решили внедрить водяные знаки на фото или же просто против загрузки своих изображений.
Закрываем листинг файлов на FTP
Собственно, есть 2 варианта дабы скрыть отображение файлов. Теоретически вы можете расположить в новых созданных каталогах базовый index.php. В случае когда на вашем сайте таких директорий несколько, особых проблем задача не вызовет.
Однако есть и более универсальный метод — с помощью htaccess. Скачиваете с FTP файл htaccess из корневой директории сайта (для вордпресс — это там где и wp-config.php). Открываете его и в самом конце дописываете строку:
Options -Indexes |
Далее сохраняете и загружаете обратно на FTP, перезаписав оригинальный файл. Для редактирования лучше использовать редакторы Notepad++ или Sublime Text 2 дабы не было каких-то проблем с кодировками. Теперь при переходе по каталогам на FTP пользователь увидит следующее сообщение:
Проблемы при закрытии FTP листинга?
Как видите, задача скрытия списка файлов решается достаточно просто. Однако есть тут свои нюансы. После изменений в htaccess файле страница каталога отдает код статуса 403 Forbidden. Это свидетельствует о том, что данная страница/раздел закрыты от пользователей. Если проверить адрес через Яндекс.Вебмастер, то увидите соответствующий HTTP статус.
При этом использование «пустого» index.php отдает код HTTP 200. Интересно влияет ли это как-то на индексацию? Мне кажется, что нет. И вот почему:
- Во-первых, во всех описаниях директивы Options -Indexes указана информация о том, данная настройка управляет исключительно отображением листинга.
- Во-вторых, для парочки CMS встречал использование Options -Indexes в описании «идеального» файла настроек htaccess. Плюс некоторые хостинги включают данную директиву по умолчанию.
- Во-третьих, запрет индексации для большинства категорий в wp-content/plugins и wp-content/themes и так уже прописан в robots.txt. Остаются разве что картинки.
- В-четвертых, как показывает тот же Яндекс.Вебмастер, 403 статус не распространяется на содержимое конкретной директории.
Однако, если вы все равно переживаете за индексацию какого-то определенного каталога, можете воспользоваться специальной командой htaccess. Для этого в нужной директории создаете файл «.htaccess» (да, с точкой вначале), после чего добавляете в него строку:
Options +Indexes |
Сохраняете и загружаете в ту папку, в которой хотите выводить список файлов по FTP. Внимание! Данная запись будет распространяется не только на текущий каталог, но и на все его поддиректории (при включенной по умолчанию AllowOverride All).
В общем, мне кажется, что htaccess директива Options -Indexes не сможет негативно повлиять на индексацию вашего сайта. С другой стороны она закроет от злоумышленников просмотр списка файлов на FTP.
Что скажете по этому поводу? Уже настроили у себя такую фишку? Или используете пустой index.php?
Так обычно же FTP требует авторизации, какие листинги. Да и вообще FTP не нужен :)
VPSadm, про авторизацию не совсем понял) Вообще все зависит от настроек хостинга/сервера, у меня просто на нескольких проектах были листинги. А вообще, как я понял, хостера автоматически убрают эти фишку. Правда, судя по заметкам в интернете, не у меня одного подобные списки выводятся.
У тебя, я смотрю, ошибка 404 срабатывает на этих страницах.
спасибо. для безопасности лишним не будет.
А, меня тайтл сбил с толку. У тебя тут тогда FTP вообще не при делах. Эта опция обычно по умолчанию выключена — индекс для директорий. Папки по-умолчанию отдают код 403. http://vpsadm.ru/screens/ вот, например. Что касается htaccess, так у меня вообще его нет, ибо без апача работает сервер.
Код 404 отдается при попытке запроса несуществующих страниц, это тоже нормальное поведение.
VPSadm, в твоем случае меня просто смутило, что vpsadm.ru/blog/wp-content/uploads/ отдает 404 вместо 403) Но видимо там приставка blog как-то по хитрому добавлена в УРЛ, думал WP в подкаталоге находится.
А по поводу опции «Options -Indexes» — я ее только на одном хостинге видел по умолчанию, все остальные у меня отдавали список файлов на ФТП если заходить через браузер в wp-content/uploads/ и т.п. Поэтому добавил и заодно пост написал.
Можете помочь со скриптом?
Елена, каким скриптом? В статье, вроде бы ничего такого нет)
На вордпрессе автоматически создаются такие файлики в папках, которые не должны участвовать в индексации, хотя я периодически вручную проверяют их наличие.
Одни клоны статей и сайтов с одной ошибкой ! Ни хера это не работает ! только в wp
ret, может что-то поменялось за последние 5лет, статью достаточно давно писал и тестил тогда же.