Запрет на просмотр папок на сервере


Перед заливкой картинок и других файлов на сервер, пора принять минимальные меры по соблюдению безопасности — запретить серверу показывать список файлов, расположенных в той или иной папке.

Делается это элементарно. Создаем в корневой папке сайта файл .htaccess и записываем туда строчку Options All -Indexes. Плюс всем запретим просматривать сам файл .htaccess. Добавим туда строчки:

<Files .htaccess>
   order allow,deny
   deny from all
</Files>

N.B. У меня в настройках сервера по-умолчанию уже была включена эта опция. Возможно, у вас также. Зато я планирую положить в папку проекта файл комментариев readme.txt. Его-то я и закрою.

<Files ~ "(.htaccess|readme.txt)">
   order allow,deny
   deny from all
</Files>

Тут может оказаться, что, несмотря на запрет, файл этот прекрасно виден любому, кто догадается набрать его правильный адрес. Скорее всего у вас работают два сервера — одни отдает посетителю статические файлы .txt, .html, .jpg, .gif и т.д., обычно за это отвечает быстрый NGINX, а Apache — за всё остальное. Так как NGINX управляется своими конфигурационными файлами, поэтому он инструкции запрета Apache игнорирует. Решение простое — переименовать файл в .readme и поправить .htaccess:

<Files ~ "(.htaccess|.readme)">
   order allow,deny
   deny from all
</Files>

Попробуйте откройте теперь файл из введя http://anydomain.ru/.readme — он не откроется. Мы получим ошибку 403 — доступ к запрашиваемой странице запрещен. Так, убрав расширения .txt, мы вывели файл из под контроля NGINX, оставив его введении Apache.