Запретить доступ по ip htaccess – Защита сайта (блокировка IP адресов, дополнительные настройки в файле .htaccess) | IT портал

Содержание

Как в htaccess запретить доступ по IP диапазону

Как в .htaccess работает блокировка по IP

Если вас интересует, как заблокировать доступ по IP к сайту нежелательным личностям, спамерам и прочим, то вам надо создать или отредактировать файл .htaccess и воспользоваться синтаксисом Order Allow,Deny либо Order Deny,Allow. Между ними есть разница:

  • Order Allow,Deny
    Сначала обработаются разрешающие правила Allow, потом запрещающие Deny, а всё, что не попадает под них, будет запрещено;
  • Order Deny,Allow
    Сначала будут обработаны запрещающие правила Deny, потом разрешающие Allow, а все, что не попадут под них, будут разрешены по умолчанию.

Обратите внимание на синтаксис, никаких лишних пробелов, иначе можно вызвать ошибку 500 Internal Server Error

Если это касается всего сайта, файл создаётся в корне, если нужно закрыть лишь определённую его часть, например, админку, файл .htaccess должен располагаться непосредственно в этом разделе.
Ну, и конечно же, ваш сервер (бекенд или рабочий) должен быть Apache. Если ваш рабочий сервер NGINX + php-fpm, то править придётся конфигурационный файл nginx.

Забанить спамера по IP диапазону

Order Deny,Allow
Deny from 192.168.1.1

Это был пример того, как забанить IP (192.168.1.1) спамера, не закрывая доступа всем остальным. Ещё можно пропустить последний октет IP-адреса, Deny from 192.168.1 , тогда будут забанены все пропущенные IP адреса. Однако, вы же понимаете, статичный IP блокировать глупо, он, скорее всего, динамический, поэтому мы берём IP и отправляемся определять подсеть с диапазоном IP, откуда он пришёл. Для этого воспользуемся любым Whois-сервисом, например, этим, ищем строку CIDR или, если её нет, NetRange

Определяем подсеть IP

Нам повезло, CIDR (Classless Inter-Domain Routing, Бесклассовая адресация) присутствует, а именно в таком формате лучше всего записывать диапазон IP в htaccess

Order Deny,Allow
Deny from 192.168.0.0/16

Если CIDR отстуствует, рекомендую воспользоваться калькулятором IP-диапазона в CIDR и данными из NetRange, чтобы получить CIDR.

Конвертируем диапазон IP в CIDR

Запретить доступ в админку

Чтобы запретить доступ в админку всем, кроме вашего IP, в htaccess, который должен располагаться в разделе админки, нужно прописать:

Order Allow,Deny
Allow from 192.168.0.0/16

Где 192.168.0.0/16— ваш IP или подсеть

Вот, скажем, вариант для WordPress. Файл .htaccess создаётся в /wp-admin/

<Files "admin-ajax.php">
  Allow from all
</Files>

Order Allow,Deny
Allow from 192.168.0.0/16

Обратите внимание, тут используется конструкция Files "admin-ajax.php". Она необходима для того, чтобы проходили ajax запросы.

Запретить доступ к файлам по IP

Вот пример, как можно защитить админку WordPress от посягательств хакеров. Здесь используется конструкция FilesMatch "регулярное выражение"

<FilesMatch  "^(wp-login|wp-config)\.php$">
  Order deny,allow
  Deny from all
  Allow from 192.168.0.0/16
</FilesMatch>

Здесь 192.168.0.0/16 — ваша подсеть IP.

Дополнительные материалы



Как запретить доступ к сайту по IP через .htaccess

Добрый день, друзья! Бывают ситуации, когда требуется запретить или ограничить доступ к сайту с определённых IP адресов. В этой статье я расскажу: «Как запретить доступ к сайту с определенного IP адреса?», «Как закрыть доступ ВСЕМ, кроме определенных IP» и т.д.

Иногда требуется запретить доступ к сайту с определённого IP адреса или нескольких IP адресов. Ну допустим, какой-то «нехороший человек» упорно «гадит» нам в комментариях… Или спам-робот повадился к нам заглядывать… Естественно нам это не понравится! Для запрета доступа к сайту и папкам сайта в файле .htaccess используются дерективы allow и deny.

Чтобы запретить доступ с определенного IP адреса вставьте в файл .htaccess этот код:


#Запрет доступа к сайту с IP 298.169.132.24
Order allow,deny
allow from all
Deny from 298.169.132.24

Бывает обратная ситуация, когда требуется закрыть доступ к сайту всем, кроме определённых IP адресов. Например, это может понадобиться, когда на сайте проводятся технические работы. Недавно у меня была такая ситуация, когда на контент одного из интернет-магазинов обслуживаемых мною поступила жалоба… Пришлось срочно закрыть к нему доступ со всех IP кроме своего, связаться с администрацией и решать эту проблему.

Чтобы закрыть доступ к сайту всем, кроме определённых IP адресов вставьте в файл .htaccess следующий код:


Order deny,allow
deny from all
#Список IP через пробел, с которых доступ разрешен
Allow from 197.143.50.248 193.478.457.10

В случае, если требуется закрыть доступ к сайту по маске, то используется не полный IP адрес. Исходный код для файла .htaccess будет выглядеть так:


#неполный адрес
198.69.
#полные адреса, соответствующие первому
198.69.132.24
198.69.136.89
198.69.1.8

#Запрет доступа к сайту по маске
Order allow,deny
allow from all
Deny from 198.69.

Для усиления защиты админки сайта имеет смысл разрешить доступ к ней только с определённых IP адресов. Пропишите в файл .htaccess следующий код:


#Указываем папку, к которой запрещаем доступ по имени хоста и его IP

Order deny, allow
deny from all
#Адреса записываются через пробел
Allow from 198.69.144.98 198.69.144.94


Стоит также сказать, что пользователь, IP адрес которого запрещён при попытке зайти на ваш сайт, получит 403 ошибку: Forbidden «You don't have permission to access / on this server».

Как видите ограничить или запретить доступ к сайту по IP адресу с помощью .htaccess совсем не сложно! Если у вас появились вопросы, буду рад ответить на них в комментариях! Задавайте! 🙂

В рубрике «Мотивация – путь к успеху» сегодня вот такая картинка:

Как вам статья? Надеюсь, тема: «Как запретить доступ к сайту по IP через .htaccess» была вам интересна, и вы нашли здесь для себя что-то полезное. Не забудьте подписаться на обновление моего сайта по e-mail.

Внимание! Всех приглашаю в свою группу Вконтакте! Давайте делиться анонсами своих статей на стене этой группы! Думаю, она станет неплохим источником трафика для каждого блоггера!

PS: я не уверен, напишу ли ещё статью в этом году, поэтому, Дорогие Друзья, от души поздравляю всех с Новым Годом и Рождеством! Желаю в новом 2013 году больше здоровья, огромного счастья, страстной любви и всего самого доброго!!!!! Всем Удачи!!!!!

На этом всё. С уважением, Павел Макаров.
P.S. Буду рад комментариям к этому посту.

Как запретить доступ к сайту по IP через .htaccess 🚫

Защита от ботов, рассылающих спам, флуда и нежелательных посещений – одна из важнейших обязанностей любого администратора веб-ресурса. Для этого существует хорошее средство – запрет доступа по IP при помощи файла .htaccess. Разберем более подробно доступные варианты изменения уровня доступа.

Создание файла .htaccess

Сначала, создается файл .htaccess как простой документ текстового формата без расширения .txt. Его можно открыть в обычном блокноте Windows, но лучше воспользоваться более расширенным редактором, например – Notepad++.

Права на этот файл должны быть обозначены как – 644, а загрузка производиться посредством ASCII-режима. Если обнаружится, что созданный файл неработоспособен необходимо обратиться в техподдержку хостинга.

Многие бесплатные хостинги запрещают использование файла .htaccess без специального разрешения. Этот файл применим только к серверам Apache и не будет исполняться на серверах под управлением Windows.

Команды

Запретить доступ к сайту по IP при помощи файла .htaccess можно используя операторы allow и deny.

Основная директива, которая используется при ограничении доступности сайта – order. Ее синтаксис следующий:

order deny,allow
#Или
order allow,deny

Конструкция order deny,allow начинает код и показывает, какие параметры будут использованы для ограничения разрешений на просмотр.

  1. Оператор allow дает разрешение.
  2. Оператор deny запрещает.

В зависимости от того в каком порядке стоят операторы в коде меняется логика работы сервера.

  1. deny,allow сообщает серверу о закрытии доступа всем IP-адресам кроме разрешенных.
  2. allow,deny напротив открывает доступ для всех IP-адресов кроме запрещенных.

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

Ограничение доступа к сайту и его разделам

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

Полное закрытие сайта

Для того чтобы полностью закрыть сайт от посещений и возможности просмотра его содержимого в .htaccess вносится следующий код:

order deny,allow
deny from all

После этого ни с какого IP-адреса зайти на сайт будет невозможно. При такой попытке на стороне клиента выдается 403 ошибка, обозначающая запрет на просмотр.

Файл .htaccess для этой операции необходимо расположить в корне сайта.

Запрет доступа для целевого IP-адреса

Запрет для конкретных IP-адресов реализуется при помощи данного кода:

#Запрет доступа к сайту с IP 298.169.132.24
order allow,deny
deny from 298.169.132.24

Файл .htaccess по-прежнему должен находится в корне сайта.

Разрешение только для конкретных IP-адресов

Сайт можно полностью закрыть, оставив разрешение только для конкретных IP-адресов. С этой целью в файле .htaccess, расположенном в корне сайта, прописываются следующие строки:

order deny,allow
deny from all
#Список IP, с которых доступ разрешен
allow from 197.143.50.248 193.478.457.10

Разрешенные IP прописываются в коде через пробел.

Закрытие доступа по маске

В определенных ситуациях ограничение необходимо сделать по маске. Для выполнения этой операции используется код:

#Неполный адрес

198.69.

#Полные адреса, соответствующие первому

198.69.132.24
198.69.136.89
198.69.1.8

#Запрет доступа к сайту по маске

order allow,deny
allow from all
deny from 198.69.

Усиление защиты административной части сайта

Помимо прочего, запрет доступа для определенных IP-адресов к разделам сайта помогает повысить безопасность административной части. Для этого, разрешение на доступ дается только определенным IP-адресам с использованием имени хоста. Для решения этой задачи создается данный код:

#Указываем папку, к которой запрещаем доступ по имени хоста и его IP-адрес

< directory /root-admin/ >
order deny, allow
deny from all

#Адреса записываются через пробел

allow from 198.69.144.98 198.69.144.94

Ограничение доступа к целевой папке

Запрет доступа к папке реализуется очень просто. Достаточно загрузить в целевую папку, которую необходимо закрыть файл .htaccess и прописать в нем всего одну строку:

deny from all

Ограничение доступа к определенному файлу на сайте

Нередко возникают ситуации, при которых необходимо закрыть возможность просмотра не сайта или папки, а только определенного файла или группы файлов. Для этого используются директивы – files и filesmatch. Они несколько похожи на мета-теги, используемые для разметки HTML-кода.

Также требуется заключение директив в знаки <>, а также использование открывающей и закрывающей код конструкции.

«Пустой» код выглядит следующим образом:

<Files>
</Files>

Внутри этой конструкции прописываются необходимые условия. Как пример приведем ограничение просмотра для архива example.zip:

<Files “example.zip”>
deny from all
</Files>

После размещения .htaccess с кодом в папке, где находится целевой файл при обращении к нему напрямую на стороне клиента появится сообщение об ошибке 403.

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

<FilesMatch "\.(gif|png|jpe?g|rar|zip)$">
deny from all
</FilesMatch>

Запретить доступ к одному файлу по IP при помощи .htaccess сделать нельзя. Для решения этой задачи понадобится использовать возможности административных панелей хостинга и самого сайта.

Запрет по IP доступа к сайту в файле .htaccess

Запрет по IP доступа к сайту в файле .htaccess

Спамеры достали, а значит пришло время уделить им внимание. В этой статье рассмотрим, как запретить доступ к сайту с определённых IP с помощью изменения настроек сервера Apache в файле .htaccess. Это очень радикальный способ отвадить недобросовестных посетителей от сайта. Радикальность данного способа заключается в том, что данным способом можно отключить показ сайта (или папки на сайте) пользователю по его IP. Пользователь конечно может попытаться обойти ограничение, сменив IP с помощью прокси-сервера или сменив провайдера, но возможности его сильно ограничиваются (списком прокси-серверов и провайдерами, предоставляющими услуги доступа в интернет) и, рано или поздно, ему это надоест и он не захочет и/или не сможет больше вам докучать.

Спам на сайте. Куда бежать? Или не бежать?

Мир полон недобросовестных людей, которые не желают что-то делать и привыкли пользоваться результатом работы других. Спамеры — это как раз сущности из этого разряда. Если на сайте есть форум или комментарии, то непременно набегут спамеры и постараются оставить там свои сообщения вместо того, чтобы создать собственный сайт с интересным содержимым.

Спам на сайте. Куда бежать? Или не бежать?

Так на сайте, посвящённом работе на компьютере, созданию сайтов и работе в интернете, могут несколько раз в сутки появляться комментарии к статьям со ссылками и текстом явно рекламного характера и никак не относящиеся к теме статьи или даже всего сайта. Что же делать?

Определяем IP пользователей, которые оставляют спам на сайте

Одним из способов борьбы со спамерами является закрытие им доступа на сайт. Но для этого нужно определить IP их компьютера (или сервера) с которого они оставляют свои сообщения. Можно конечно посмотреть в логи сервера, но многие программы могут записывать и хранить IP пользователя, оставившего сообщение. Так проще отследить и проконтролировать IP, например:

Определяем IP пользователей, которые оставляют спам на сайте

Запрет по IP доступа к сайту в файле .htaccess

И вот наконец добрались до сути. Когда есть IP и хостинг позволяет использовать процедуру deny from в файле .htaccess, можно запретить пользователям с определённых IP заходить на сайт.

Для того, чтобы запретить пользователю заходить на весь сайт нужно в корне сайта создать (если ещё его нет) или прописать в файле .htaccess следующие три строчки:

Order allow,deny
allow from all
Deny from 79.173.83.153

Первые две строчки разрешают всем пользователям получать данные из папки и всех в неё вложенных папках.

А последняя сточка запрещает пользователям с указанным IP доступ к содержимому папки и всем файлам и папкам, находящимся в ней, выдавая такому пользоватею 403-ю ошибку: Forbidden. Запрет доступа к ресурсам сервера:

403-ю ошибка: Forbidden. Запрет доступа к ресурсам сервера

Резюме

Таким образом можно закрыть доступ спамерам до сайта.

Радикальное решение, но которое точно отвадит их от вашего сайта.

Также можно ограничить доступ по IP не ко всему сайту, а только к определённой его части. Для этого нужно создать файл .htaccess в той папке, доступ к которой нужно ограничить. Это позволит допускать пользователей только к определённым ресурсам на сайте, запрещая доступ в другие.

Спамер может быть не один или один, но заходящих с разных IP-адресов. Для того, чтобы запретить все IP с которых заходят пользователи, доступ которых нужно ограничить в последней строчке через пробел нужно ввести все IP адреса, которые нужно заблокировать.

Спамеры больше не пройдут! =)

Продолжение о борьбе со спамерами читать → в этой статье.

Заберите ссылку на статью к себе, чтобы потом легко её найти 😉

Выберите, то, чем пользуетесь чаще всего:

Спасибо за внимание, оставайтесь на связи! Ниже ссылка на форум и обсуждение ; )

Как в htaccess запретить доступ по IP диапазону

Здравствуйте. Если вас интересует, как заблокировать доступ по IP к сайту нежелательным личностям, спамерам и прочим, то вам надо создать или отредактировать файл .htaccess и воспользоваться командой Order Allow,Deny либо Order Deny,Allow. Между ними есть разница:

  • Order Allow,Deny
    Сначала обработаются разрешающие правила Allow, потом запрещающие Deny, а всё, что не попадает под них, будет запрещено
  • Order Deny,Allow
    Сначала будут обработаны запрещающие правила Deny, потом разрешающие Allow, а все, что не попадут под них, будут разрешены по умолчанию

Обратите внимание на синтаксис, никаких лишних пробелов, иначе можно вызвать ошибку 500 Internal Server Error

Если это касается всего сайта, файл создаётся в корне, если нужно закрыть лишь определённую его часть, например, админку, файл .htaccess должен располагаться непосредственно в этом разделе.
Ну, и конечно же, ваш сервер (бекенд или рабочий) должен быть Apache. Если ваш рабочий сервер NGINX + php-fpm, то править придётся конфигурационный файл nginx.

Забанить спамера по IP диапазону

1

2

Order Deny,Allow

Deny from 192.168.1.1

Это был пример того, как забанить IP (192.168.1.1) спамера, не закрывая доступа всем остальным. Ещё можно пропустить последний октет IP-адреса, Deny from 192.168.1 , тогда будут забанены все пропущенные IP адреса. Однако, вы же понимаете, статичный IP блокировать глупо, он, скорее всего, динамический, поэтому мы берём IP и отправляемся определять подсеть с диапазоном IP, откуда он пришёл. Для этого воспользуемся любым Whois-сервисом, например, этим, ищем строку CIDR или, если её нет, NetRange

 

Определяем подсеть IP

Нам повезло, CIDR (Classless Inter-Domain Routing, Бесклассовая адресация) присутствует, а именно в таком формате лучше всего записывать диапазон IP в htaccess

1

2

Order Deny,Allow

Deny from 192.168.0.0/16

Если CIDR отстуствует, рекомендую воспользоваться калькулятором IP-диапазона в CIDR и данными из NetRange, чтобы получить CIDR.

 

Конвертируем диапазон IP в CIDR

-----

Краткая памятка по ограничению доступа к сайту.

Началось с того, что задолбали спамеры из Польши. Поскольку я рассчитываю на российскую аудиторию, решил не городить огород, а просто блокировать весь диапазон, в котором засветился спамер.

Для ограничения прав доступа в .htaccess существуют директивы Deny и Allow.

Первым шагом следует задать порядок их обработки, например:

Order Allow, Deny

Порядок следования -  Allow, Deny или Deny, Allow - имеет значение:

  • При Allow, Deny сначала обрабатываются разрешающие правила Allow, затем запрещающие Deny. Действия, не подпадающие ни под одну из директив Allow или Deny, будут запрещены по умолчанию.
  • При Deny, Allow сначала обрабатываются запрещающие правила Deny, затем разрешающие Allow. Действия, не подпадающие ни под одну из директив Deny или Allow, будут разрешены по умолчанию.

Следующим шагом указываются блокируемые ip, например:

deny from 83.4.0.0

Можно не указывать последние октеты, и тогда будет заблокирован весь пропущенный диапазон адресов:

deny from 83.4.0

Но в моем случае нужно было ограничить диапазон  83.4.0.0 - 83.11.255.255. Перечислять 11 диапазонов лень. А если завтра их станет 200? Решение есть и в этом случае - нужно указать диапазон в синтаксисе т.н. безклассовой адресации (CIDR). Совсем раем делает жизнь онлайн-калькулятор ip-диапазона в CIDR. Вводим туда наш диапазон и получаем готовое правило:

deny from 83.4.0.0/14
deny from 83.8.0.0/14

Еще ссылка на полезный  список ip-диапазонов по географическому признаку.

За инфу спасибо: https://sheensay.ru/htaccess-allow-deny и http://umi-cms.spb.su/ref/apache/htaccess/blokirovka_po_ip-adresam_v_htaccess/

Статьи по теме

  • Все, кто пользуется Denwer (ДНВР), проще говоря джентльменским набором веб-разработчика, знают, что обновления пакета происходят не так уж и ...

    2018-10-07

  • Один из моих клиентов обратился ко мне с такой просьбой. У них есть сайт и на нем в некоторых местах, причем не со всех устройств появляет...

    2018-05-02

  • Достаточно распространённым является мнение, что редизайн интернет-ресурса может крайне негативно сказаться на его производительност...

    2018-04-03

  • В последнее время попадаются сайты с одной и той же уязвимостью в AdsManager, в этой статье я расскажу, как найти и закрыть уязвимость на сайт...

    2018-03-21

  • Как писать? Стройте текст по определенной логической схеме. Интуитивно составленный текст, в котором Вы выкладываете посетителю все и с...

    2017-05-24

  • Ребята из проекта Canva знают о сайтах с бесплатными иконками буквально все — составили список из 50 наиболее популярных и интересных. Те...

    2017-05-07

  • Доброго времени суток уважаемые мои читатели! Сегодня мы расследуем причину появления ошибки [an error occurred while processing the directive] на одном из мо...

    2017-03-13

  • Чтобы поисковые роботы при попытки индексации не получали «403» ошибку и не убирались восвояси, предлагаем ознакомиться со списком диап...

    2017-03-01

  • 14 декабря стало известно об уязвимости, которая доступна во всех версиях CMS Joomla, начиная от Joomla 1.5 (до 3.4.5 включительно). Уязвимость позвол...

    2017-01-16

  • Одна из основных − практически наиболее важных − задач сайта является обеспечение возможности для клиентов связаться с представител...

    2016-11-30

  •   Владельцы сайтов часто сталкиваются с необходимостью обеспечить сохранность веб-страниц. Не секрет, что они склонны к изменениям и с...

    2016-10-12

  •   Публикация текстового контента на интернет-сайтах несколько отличается от аналогичных действий с печатью статей в бумажных журнала...

    2016-09-21

  •   Если вы являетесь владельцем интернет-ресурса, который был создан для работы с отечественными пользователями, то наверняка сталкива...

    2016-09-13

  •   Основой создания и работы любого сайта являются различные веб-технологии. В этой статье обратим внимание на то, какие технические во...

    2016-08-31

  •   В наши дни практически каждая организация − будь то маленькая фирма или крупная корпорация − имеет собственный веб-сайт. Во многом о...

    2016-08-03

Как через .htaccess заблокировать доступ к файлу на веб-сервере по IP » Sysmasters.net

Зачастую возникает необходимость заблокировать непрошеным гостям доступ к какому-то файлу или даже целой папке на Вашем сайте. Например, к админ-панели или каким-то важным файлам и папкам, которые должны быть доступны только хозяину сайта, но пароль на них ставить нет необходимости.

Это, на самом деле, задача на «раз-два». : )

Как заблокировать доступ к одному или нескольким файлам по IP

Для блокировки нам понадобится создать всего 1 файл с именем .htaccess в папке  с защищаемыми файлами. В него при помощи любого подходящего текстового редактора (например, того же «Notepad2») впишите следующие строки:

# Запрет доступа по IP адресу к файлу file.php

<Files file.php>
Order Deny,Allow
Deny from all
Allow from Ваш IP адрес
</Files>

 

Давайте разберем написанное построчно, чтобы было понятно — что же мы делаем.

Конструкция

<Files file.php>
...
</Files>

даёт понять системе, что правила, которые находятся внутри требуется применять только при попытке доступа к файлу с  именем file.php

Строка:

Order Deny,Allow

определяет порядок действий при блокировке. То есть, сначала применяются все директивы, касающиеся блокировки (deny), а потом уже всё, что касается разрешения доступа  (allow).

Дальше мы запрещаем доступ к файлу отовсюду:

Deny from all

(кстати, если нужно запретить только с отдельных IP — Deny from Запретный_IP-адрес)

…и разрешаем его только с нашего IP («Ваш_IP-адрес» заменяем на нужный IP):

Allow from Ваш_IP-адрес

Всё, блокировка по IP установлена. Теперь любая попытка обращения к указанному файлу с чужих IP-адресов будет приводить к ответу 403 «Access denied»

Полезные примечания

Часто бывает, что нужно ограничить доступ ко всем файлам с каким-то одним расширением. Для этого используется та же конструкция, в которую нужно внести минимальные изменения. А именно первую строку сделать вот такой:

<Files «*.conf»>   — здесь звёздочка * указывает на то, что имя файла может состоять из любого количества любых знаков а после точки, собственно, вписываем наше расширение, доступ к которому требуется блокировать.

В результате, содержимое файл .htaccess будет выглядеть вот так:

<Files "*.conf">
Order Deny,Allow
Deny from all
Allow from Ваш IP адрес
</Files>

Если расширений несколько — пишем их через разделитель. Вот так: <Files ~ «\.(inc|conf|cfg)$»> 

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

.htaccess примеры

Для чего служит .htaccess?

Набирая адрес в строке браузера, вы получаете на свой компьютер файлы, которые отображает браузер. Управление тем, какие файлы и как вам показывать (пересылать) осуществляет веб-сервер. Наиболее популярных серверов два: IIS и Apache.
Как и любая программа, веб-сервер имеет определенные настройки. Но, у вас, как пользователя Апача может (и скорее всего не будет, если говорить о виртуальном хостинге) прав менять конфигурацию Апача через его главные файлы, действие которых распространяется на всех пользователей этого сервера. Но, вы можете менять некоторые конфигурационные файлы, который распространяют свое действие только на ваш сайт. Один из таких файлов - .htaccess
Это файл гибкой настройки веб-сервера Апач. "Гибкий" обозначает, что как только вы поменяли что-то в этом файле, изменения тут же вступают в силу. С помощью него можно переопределить многие директивы из файла httpd.conf (этот файл является главным конфигурационным файлом сервера Апач и его действия распространяются полностью на всех пользователей данной копии Апача). В случаях, когда у вас нет доступа в файлу настройки Апача (тот же виртуальный хостинг), вам поможет именно этот файл.
Этот файл не доступен веб-пользователю из браузера. Если файл .htaccess расположен в корневой директории сервера, то его действия распространяется на весь сервер, кроме тех папок, где находится другой файл .htaccess (и кроме всех папок "ниже" этой папки со вторым .htaccess).
Пример:
Структура ваших директорий на сервере такая:

|-user
| |
|  -user1
|        |
|         -user2
|
|-data
| |
|  -data1
|      |
|       -data2
|

Директории user1 и user2 будут вложенными по отношению к директории user. Если мы поместим в директорию www файл .htaccess, то его действие будет автоматически распространяться и на директории user1 и user2.
В директорию data помещаем другой файл .htaccess, по-сравнению, с тем, что находится в директории user. И для директорий data1 и data2 будет действовать файл .htacсess, находящийся в data.
Теперь, в директорию user2 мы помещаем еще один файл .htaccess, который отличен от того, что находится в директории 2мя уровнями выше (это директория user). В итоге, настройки для директории user2 будут определяться только тем файлом .htaccess, который находится в этой директории.
Так как чаще всего Апач настроен так, что всегда ищет этот файл в директории, то .htaccess поможет вам быстро и без останова сервера произвести его перенастройку.


Синтаксис .htaccess

Вот обязательной синтаксис, несоблюдение которого приводит к ошибкам сервера:
- пути к файлам (директориям) указываются от корня сервера. Пример: /opt/home/www.astanafoto.com/htdocs/config/.htpasswords
- домены с указанием протокола
Пример: Redirect / http://www.site.ru

Файл имеет название именно "точка" htaccess
Должен быть записан в UNIX-формате. Для оболочки FAR, достигается F4 (редактирование файла), Shift+F2 (выбрать "сохранить как UNIX-текст").


Как запретить веб-посетителям читать файлы в директории?

Запрет на все файлы:deny from all
Где all обозначает "все".


Разрешить доступ с определенного ip:order allow deny
deny from all
allow from <ваш ip>
В данном случае, <ваш ip> обозначает конкретный адрес.
Например:order allow deny
deny from all
allow from 192.126.12.199


Запретить доступ с определенного ip:order allow deny
deny from all
deny from <ваш ip>
Использование <ваш ip> аналогично для примера выше.

В зависимости от того в каком порядке указаны директивы меняется логика работы сервера. В случае если Deny,Allow то запрещается доступ со всех IP кроме оговоренных, в случае если Allow,Deny разрешается доступ со всех IP кроме оговоренных. Далее должны идти секции описания для доступа и запрета. Ключевое слово all означает со всех IP

Например мы хотим запретить (блокировать) доступ с IP 81.222.144.12 и 81.222.144.20 и разрешить всем остальным нам необходимо добавить в .htaccess следующий код:

Order Allow,Deny
Allow from all
Deny from 81.222.144.12, 81.222.144.20

Для обратной ситуации когда мы хотим запретить доступ со всех IP кроме 81.222.144.12 и 81.222.144.20 нам необходимо добавить в .htaccess следующий код:

Order Deny,Allow
Deny from all
Allow from 81.222.144.12, 81.222.144.20

Чтобы разрешить только в частности хостов или групп хостов для доступа к серверу, хост может быть указан в любом из следующих форматов:

  • для доменного имени (или его части):
    Allow from apache.org
    Allow from .net example.edu
  • для ip адреса:
    Allow from 10.1.2.3
    Allow from 192.168.1.104 192.168.1.205
  • для части ip адреса:
    Allow from 10.1
    Allow from 10 172.20 192.168.2
  • для пары сеть/маска:
    Allow from 10.1.0.0/255.255.0.0
  • для сети/nnn CIDR спецификации:
    Allow from 10.1.0.0/16 

Запрет на группу файлов по маске:<Files "\.(inc|sql|...другие расширения...)$">
order allow,deny
deny from all
</Files>
Определяет доступ к файлу по его расширению.
Например запрет на доступ к файлам с расширениям "inc" для веб-посетителей:
<Files "\.(inc)$">
order allow,deny
deny from all
</Files>

В данном примере сам веб-сервер Апач может обращаться к файлам с таким расширениям.


Запрет на конкретный файл:
Можно поставить запрет на конкретный файл по его названию и расширению.<Files config.inc.php>
order allow,deny
deny from all
</Files>
В данном примере стоит запрет на обращения к файлу config.inc.php.


Пароль на директорию:AuthName "Private zone"
AuthType Basic
AuthUserFile /pub/home/твой_логин/.htpasswd
require valid-user
</Files>
Значение AuthName будет выводиться для посетителя и может использоваться для пояснения запроса авторизации. Значение AuthUserFile указывает на место, где хранится файл с паролями для доступа к данной директории. Этот файл создается специальной утилитой htpasswd.exe.

Например в директории, которую защищаем паролем создаем такой .htaccess:AuthName "For Registered Users Only"
AuthType Basic
AuthUserFile /pub/site.ru/.htpasswd
require valid-user
</Files>
В этом примере, посетитель при запросе директории, будет читать фразу "For Registered Users Only", файл с паролями для доступа должен лежать в директории /pub/site.ru/ и называться .htapasswd . Директория указывается от корня сервера, если вы неправильно зададите директорию, то Апач не сможет прочитать файл .htpasswd и никто не получит доступа к данной директории.


Пароль только на 1 файл:сайт источник http://yapro.ru Tue Feb 09 2010 15:44:59 GMT+0300
Аналогично паролированию директории полностью, можно ставить пароль только на 1 файл.
Пример установки пароля на файл private.zip:<Files private.zip>
AuthName "Users zone"
AuthType Basic
AuthUserFile /pub/home/твой_логин/.htpasswd
</Files>


Пароль на группу файлов:
Аналогично, используя <Files "\.(inc|sql|...другие расширения...)$">, можно ставить пароли по маске файлов.
Пример установки пароля на доступ ко всем файла с расширением "sql":
<Files "\.(sql)$">
AuthName "Users zone"
AuthType Basic
AuthUserFile /pub/home/твой_логин/.htpasswd
</Files>


Проверка прав доступа

Задача: есть каталог a1 и в нем два вложенных каталога a2, a3, введено 2 уровня пользователей. 1 группа имеет доступ только к a1 и a2, 2-я ко всем трем каталогам. Необходимо проводить аутентификацию только 1 раз - при доступе к a1, но при этом соблюдать права на доступ к а2 и а3.
Ник и пароль запрашиваются только при входе на а1 - если у юзвера есть доступ на а2 пароль уже не запрашивается. Если на а3 доступа нет, вылетит табличка "введите пароль".
www.site.ru/a1
www.site.ru/a1/а2
www.site.ru/a1/a3
a1 - общий и вместе с тем закрытый. а2 и а3 только для отдельных личностей.


файл .htaccess для каталога а1:AuthName "Input password"
AuthType Basic
AuthUserFile "/pub/home/login/htdocs/clousearea/.htpasswd"
<Files *.*>
require valid-user
</Files>
файл .htaccess для каталога а2: AuthName "Input password"
AuthType Basic
AuthUserFile "/pub/home/login/htdocs/clousearea/.htpasswd"
<Files *.*>
require user юзвер1 юзвер2 юзвер3
</Files *.*>
файл .htaccess для каталога а3: AuthName "Input password"
AuthType Basic
AuthUserFile "/pub/home/абв/htdocs/clousearea/.htpasswd"
<Files *.*>
require user юзвер1 юзвер4 юзвер5
</Files *.*>


Как сделать перенаправление (редирект) посетителя?

Редирект на другой url:
Что бы сделать перенаправления посетителя на сайт http://site.ru в .htaccess Redirect / http://www.site.ru


Показ разных страниц, в зависимости от IP адреса посетителя:SetEnvIf REMOTE_ADDR <нужный ip адрес> REDIR="redir"
RewriteCond %{REDIR} redir
RewriteRule ^/$ /another_page.html
Например, перенаправление посетителей с ip адресом 192.12.131.1 на страницу about_my_sity.html:SetEnvIf REMOTE_ADDR 192.12.131.1 REDIR="redir"
RewriteCond %{REDIR} redir
RewriteRule ^/$ /about_my_sity.html


Перенаправление посетителя при запросе определенных страниц:
Это уже для всех сетевых вирусов и сканеров. Теперь любой запрос с адресом /_vti_bin будет автоматически перенаправляться на Microsoft: redirect /_vti_bin http://www.microsoft.com
redirect /scripts http://www.microsoft.com
redirect /MSADC http://www.microsoft.com
redirect /c http://www.microsoft.com
redirect /d http://www.microsoft.com
redirect /_mem_bin http://www.microsoft.com
redirect /msadc http://www.microsoft.com
RedirectMatch (.*)\cmd.exe$ http://www.microsoft.com$1


Как сделать стартовой другую страницу?

Что бы поменять страницу, которая будет показываться при обращении к директории, пишем:DirectoryIndex <нужная страница>Можно указывать несколько страниц.DirectoryIndex index.shtml index.php index.php3 index.html index.htm


Как заставить Апач обрабатывать SSI директивы?

SSI позволяют "собирать" страницу из кусочков. В одном кусочке у вас код меню, в другом код верхней части страницы, в третьем - нижней. А посетитель видет обычную страницу, которая состоит из того кода, который входит в ваши кусочки.
Необходимы обязательные установки в httpd.conf:
В блоке, начинающемся с <Directory/> и заканчивающийся </Directory> в строку Options Indexes добавьте Includes.

После, в файле .htaccess пишем:
AddHandler server-parsed .shtml .shtm .html .htm


Как заставить Апач выполнять в html документах php код?

Иногда бывает полезно "обмануть" посетителя, выдавая ему свои php-скрипты или иные файлы, как html файлы. Реально используется для индексации поисковой системой Rambler php-скриптов. Некоторые делаю мелкие фишки, вроде того, что дают фалам расширения совпадающие с какими-либо "знаковыми" именами. Например, на сайте www.osg.ru используются файлы с расширением osg: index.osg, script.osg и т.п.
RemoveHandler .html .htm
AddType application/x-httpd-php .php .htm .html .phtml
При большой посещаемости сервера может вызвать тормоза. Спрашивайте у админа.


Как самому обрабатывать ошибки Апача?

Наиболее интересные и полезные ошибки Апача это: 403-404, 500.
403 - пользователь не прошел аутентификацию, запрет на доступ (Forbided).
404 - запрашиваемый документ (файл, директория) не найден.
500 - внутренняя ошибка сервера (к примеру, ошибка в синтаксисе файла .htaccess).
Для того, что бы пользователю при этих ошибках были показаны ваши собственные сообщения об ошибках, в .htaccess пишем:
ErrorDocument 403 /errors/403.html
ErrorDocument 404 /errors/404.html
ErrorDocument 500 /errors/500.html
При этом при возникновении 404 ошибки пользователю загрузится файл errors/403.html.


Удобно делать собственный обработчик на некоторые ошибки. В .htaccess пишем:ErrorDocument 403 /errors/error.php?403
ErrorDocument 404 /errors/error.php?404
ErrorDocument 500 /errors/error.php?500
В error.php через $HTTP_SERVER_VARS['REQUEST_URI'] определяем какой документ вызвал ошибку и дальше обрабатываем. Если в .htaccess на ErrorDocument стоит указание файла с полным путем (http://site.ru/error.php), то $HTTP_SERVER_VARS['REQUEST_URI'] будет содержать этот файл, а не вызвавший ошибку.
В Internet Explorer 5.0 неправильно обрабатывается файл, вызывающийся при ошибке, если его размер меньше 1 килобайта. Будет вызвана стандартная страница IE 404.

Как поставить запрет на отображение содержимого директории при отсутствии индексного файла?

Предположим, что у вас вся графика, используемая на сайте находится в директории img. Посетитель может набрать в адресной строке браузера эту директорию и увидеть список всех ваших графических файлов. Конечно, это не нанесет вам урона, но можно и не дать такого просмотра посетителю. В .htaccess пишем:

Options -Indexes


Можно ли указать кодировку на все файлы, в которой по умолчанию получает документы браузер?

На заре интернета и зарождения браузеров, часто была ситуация, что браузер не мог автоматически определить, в какой из русских кодировок написан документ и в браузер выдавалась какая-то каша. Для избежания этого указываем, что все отдаваемые страницы будут иметь кодировку windows-1251:
AddDefaultCharset windows-1251


Можно ли указать кодировку на загружаемые файлы?

При загрузке посетителем файла на сервер, возможна перекодировка его - указываем, что все получаемые файлы будут иметь кодировку windows-1251:
CharsetSourceEnc windows-1251


Создал файл .htaccess, но сервер выдает 500 ошибку - Internal Erorr

Ошибка синтаксиса или файл записан не в том формате.
Смотрите вопрос #2.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *