Вторник, 24 Сен 2013 в 12:30
Запреты доступа в .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.
На этом моменте мы с Вами прервёмся. Если что-то не понятно — пишите в комментариях, будем обязательно разбираться.
- Category: Сайтостроение
- Ваш отзыв