Запреты и разрешения доступа в файле .htaccess | SelkinVitaly.RU
Запреты и разрешения доступа в файле .htaccess  | SelkinVitaly.RU

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

Рубрика: Файл .htaccess

Просмотров: 3792

Здраствуйте! Продолжаем пополнять наши знания. На этот раз я хочу поговорить о запретах в файле .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.

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

Комментарии:

Добавил: lenny (24-May 2010 14:21:42)

Как запретить доступ ко всем папкам кроме одной?

Добавил: TriBal (06-May 2010 0:00:00)

Можно ли обойти запрет на сайте и добраться до нужного файла? я попал на сайт чтобы это найти))) просто одны чтука нужна очень...подскажите что нибуть плиз!!!

Добавил: Борис (06-Apr 2010 10:03:05)

Здравствуйте!, как сделать что бы при обращении к папке "private" выводилось приглашение ввести пароль, а к файлам в папке "private/123" получал доступ любой ?

Добавил: Anna (19-Feb 2010 15:26:05)

Здравствуйте! А как сделать доступ к одному файлу нескольким IP?

Селькин Виталий:
Здравствуй, Анна.
Например:

<Files file.cfg>
Deny from all
Allow from 127.0.0.1
Allow from 127.0.0.2
Allow from 127.0.0.3
</Files>

Добавил: Web Programmer (05-Feb 2010 4:43:41)

Спасибо!

Селькин Виталий:
Не за что(:

Добавил: Sergey (02-Feb 2010 16:16:40)

У меня вопрос. Эффект этих записей одинаковый?


Order Deny,Allow
Deny from all 
Allow from 127.0.0.1
Order Allow,Deny
Allow from 127.0.0.1
Deny from all

Селькин Виталий:
Думаю, что нет. Используйте первый способ. Он самый надёжный.

Добавил: Юрий (02-Feb 2010 15:04:54)

Очень полезно, спасибо!

Добавил: inst (23-Dec 2009 17:28:35)

Вот интересный вопрос: а как запретить доступ ко всей папке кроме одного файла? =)

Селькин Виталий:
Пробуйте вот так:

Order Deny,Allow
Deny from all
<Files file.cfg>
Allow from all
</Files>


Добавление комментария:

Имя *:

Email:

Текст *:

Символы на картинке *:

RSS-подписка
RSS-подписка на статьи по основам сайтостроения RSS-подписка на полезные уроки по web-языкам
Разделы статьй
Каталог товаров
Разделы уроков
Последние статьи
Последние уроки