Вторник, 24 Сен 2013 в 12:30

Запреты доступа в .htaccess

Автор: admin

Сегодня я хочу поговорить о запретах доступа в файле .htaccess.

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

htaccess

Устанавливаем запреты:

Забегая вперёд, хочу сказать, что запретом руководит директива Deny, доступом — Allow. Т.е когда необхомо запретить доступ, используем Deny, а когда разрешить — Allow.

Если нужно связать какой-нибудь файл/папку, то используем Files, в котором указываем путь к файлу/папке.

Возможно сейчас Вам не понятно, но в процессе чтения всё поймёте.

Запрет всем посетителям, в том числе и нам, на доступ ко всем файлам и папкам:

Deny from all

И теперь, когда посетитель обращается к каталогу, в котором находится .htaccess файл, он получает сообщение о запрете. Для чего этот вариант запрета используется? Отвечу — для защиты от прямого вызова.

Например, у нас на сервере имеется папка include, в которой содержатся подключаемые файлы. Возможность прямого вызова этих файлов — уязвимое место Вашего сайта, которое используют многие вредители. Для того чтобы это предотвратить, создаём .htaccess файл, прописываем данный запрет и помещаем файл в папку include. И если теперь обратиться к файлам папки include или к самой папке, то увидим сообщение о запрете.

Запрет определённому IP-адресу:

Аналогичная ситуация, только вместо «all» прописываем IP-адреc вредителя:

Deny from 127.0.0.1

Этот пример можно использовать вкачестве банов. Например, на нашем сайте было осуществлена попытка взлома. Мы узнали, что злоумышленник действовал с IP-адреса 192.168.1.1. Прописав запрет для данного адреса в .htaccess файле, находящемся в корне сайта, мы блокируем доступ вредителю к нашему сайту.

Запрет нескольким IP-адресам:

Deny from 127.0.0.1
Deny from 192.168.1.1

Запрет на доступ к определённому файлу:

Предположим, что нужно запретить доступ лишь к одному файлу, а остальным папкам оставить. В такой ситуации прописываем в наш .htaccess следующий код:

<Files page.php>
Deny from all 
</Files>

Получаем запрет на доступ файла page.php. Если нужно прописать запрет для одного юзера, то, опять же, заменям «all» на IP-адрес.

Запрет на доступ к файлам с определённым одним расширением:

<Files *.cfg>
Deny from all 
</Files>

Имеем запрет на все файлы с расширением cfg.

А представьте, что у нас на сервере следующие файлы:

  • a.cfg — нужен запрет
  • config.cfg — запрет не нужен
  • b.cfg — нужен запрет
  • file.cfg — запрет не нужен

Закономерность понимаете? Файлы с расширением cfg, имеющие перед точкой один символ, подлежат запрету. В таком случаем используем не спецсимвол «*«, а «?«:

<Files ?.cfg>
Deny from all 
</Files>

Т.е «?» обозначает один любой случайный символ:

<Files s?l?in.cfg>
Deny from all 
</Files>

Под такой запрет могут попасть файлы selkin.cfg, salvin.cfg и тд., однако не попадут selkinv.cfg(лишний символ), kelkin.cfg(неверный символ).

Опять же, «all» можно менять на IP.

Запрет на доступ к файлам с несколькими расширениями:

<Files ~ "\.(conf|cfg)$">
Deny from all 
</Files>

Файлы с расширением conf и cfg подлежат запрету.

Открываем доступ только одному IP:

Order Deny,Allow
Deny from all 
Allow from 127.0.0.1

Строка «Order Deny,Allow» указывает последовательность действий. Проще говоря, мы обращаемся к веб-серверу: «Apache, запрети всем доступ к этому каталогу, но мне(127.0.0.1) разреши». Видите, что сначала запрещаем доступ, потом — разрешаем, поэтому прописываем «Order Deny,Allow«, а не «Order Allow,Deny«. Вторая строка нам уже знакома — запрет доступа для всех, а третья — открывает доступ персонально для нас. Получаем запрет для всех, кроме меня.

Данный вид запрета можно использовать в администраторской часте сайта. Например, админка сайта находится в папке adm. Мы создаём .htaccess с данным кодом, прописав свой IP, и помещаем его в папку adm.

На этом моменте мы с Вами прервёмся. Если что-то не понятно — пишите в комментариях, будем обязательно разбираться.

Ваш отзыв

Цитаты великих

"Ложь и коварство — прибежище глупцов и трусов."

Ф. Честерфилд

Я в Контакте