Полезные хаки и сниппеты для .htaccess / Хабр
Это перевод очень интересной лично для меня статьи, которым я хочу поделиться с уважаемым хабрасообществом. Некоторые из приведенных рецептов я уже встречал на Хабре, но разрозненно и далеко не все из нижеприведенного.
О предназначении файла .htaccess знает каждый веб-разработчик. На базовом уровне он позволяет управлять доступом к каталогам сайта. Но добавляя в него различные дополнительные фрагменты кода, с ним можно сделать и много других интересных вещей.
Если же вам нужны базовые сведения о предназначении данного файла, то вы можете получить из нашей статьи введение в .htaccess (перевод данной статьи не делал, так как там основы, их достаточно в русскоязычном сегменте Сети, но если будет проявлен интерес, то можно и ее перевести для полноты картины — прим. переводчика), в которой достаточно подробно раскрыты все аспекты его применения.
Итак, полезные примеры использования. htaccess:
1. Управление доступом к файлам и каталогам
Защита паролем — это одно, но иногда может понадобиться полностью блокировать доступ пользователей к определенному файлу или папке. Обычно это относится к системным папкам, таким, например, как includes, доступ к которым должны иметь приложения, но не пользователи.
deny from all
Однако учитывайте, что доступ будет блокирован для всех пользователей, включая и вас. Открыть доступ для конкретного пользователя можно прописав его IP-адрес. Вот код, который для этого потребуется:
order deny,allow
deny from all
allow from xxx.xxx.xxx.xxx
где xxx. xxx. xxx. xxx — это ваш IP. Для задания разрешенных диапазонов IP-адресов вы можете заменить три последние цифры. Например, написав вместо них «0/12», вы зададите диапазон IP-адресов одной сети, что избавит вас от необходимости вводить в список все разрешенные IP-адреса отдельно.
Если вы хотите заблокировать доступ к определенному файлу, включая сам. htaccess, используйте следующий фрагмент кода:
<Files .htaccess>
order allow,deny
deny from all
</Files>
Если вы хотите указать определенные IP-адреса которым надо запретить доступ, перечислите их при помощи allow from.
Если же вы хотите заблокировать доступ к файлам определенного типа, используйте этот код:
<FilesMatch ".(htaccess|htpasswd|ini|phps|fla|psd|log|sh)$">
Order Allow,Deny
Deny from all
</FilesMatch>
2. Запрет на просмотр директорий
Для предотвращения просмотра директорий сайта добавьте в .htaccess следующий код:
Options All -Indexes
Если же по какой-то причине вы хотите разрешить просмотр всех директорий, используйте код:
Options All +Indexes
3. Ускорение времени загрузки за счет сжатия файлов
Сжимать можно файлы любого типа. Например, для сжатия HTML-файлов добавьте код:
AddOutputFilterByType DEFLATE text/html
Для сжатия текстовых файлов используйте:
AddOutputFilterByType DEFLATE text/plain
Вы также можете сжать JavaScript или включить сжатие для других различных типов файлов командами:
AddOutputFilterByType DEFLATE application/javascript
AddOutputFilterByType DEFLATE application/rss+xml
Кроме того, вы можете сжать все ваши JavaScript, HTML и CSS файлы при помощи GZIP. Для этого используйте следующий код:
<IfModule mod_gzip.c>
mod_gzip_on Yes
mod_gzip_dechunk Yes
mod_gzip_item_include file \.(html?|txt|css|js|php|pl)$
mod_gzip_item_include handler ^cgi-script$
mod_gzip_item_include mime ^text\.*
mod_gzip_item_include mime ^application/x-javascript.*
mod_gzip_item_exclude mime ^image\.*
mod_gzip_item_exclude rspheader ^Content-Encoding:.*gzip.*
</IfModule>
4. Защита сайта от вставки изображений с других ресурсов
Если вы хотите запретить добавление ссылок на изображения со сторонних ресурсов, добавьте в файл .htaccess код:
RewriteEngine on
RewriteCond %{HTTP_REFERER} !^$
RewriteCond %{HTTP_REFERER} !^http(s)?://(www\.)?yourdomain.com [NC]
RewriteRule \.(jpg|jpeg|png|gif)$ - [NC,F,L]
Не забудьте заменить yourdomain.com на имя вашего домена.
5. Блокировка посетителей, перешедших с определенного домена
Если вы не хотите видеть на своем сайте пользователей с конкретного домена, то вы можете запретить им доступ. Например, пользователей с нежелательных ресурсов (сайты для взрослых, хакерские сайты и т. д.) вы можете перенаправлять на страницу 403 Forbidden. Для этого необходимо включить mod_rewrite, хотя, как правило, он включен по умолчанию. Добавьте в .htaccess код:
<IfModule mod_rewrite.c>
RewriteEngine on
RewriteCond %{HTTP_REFERER} bannedurl1.com [NC,OR]
RewriteCond %{HTTP_REFERER} bannedurl2.com [NC,OR]
RewriteRule .* - [F]
</ifModule>
Вам необходимо заменить bannedurl1.com и bannedurl2.com доменами, которые вы хотите внести в черный список. Вы можете использовать флаг [NC], указывающий, что введенное доменное имя нечувствительно к регистру. Флаг [F] указывает на тип действия, в данном случае — отображение ошибки 403 Forbidden. Если вы хотите запретить несколько сайтов, используйте флаги [NC, OR] для каждого домена, если же вы хотите запретить использование одного домена — используйте только флаг [NC].
6. Блокирование запросов от определенных браузеров
Если в ваших файлах журналов появились записи о посещении особых браузеров (это могут быть имитирующие работу браузера боты или пауки), вы можете запретить им доступ на свой сайт, добавив несколько строк в. htaccess:
RewriteEngine On
RewriteBase /
SetEnvIfNoCase Referer "^$" bad_user
SetEnvIfNoCase User-Agent "^badbot1" bad_user
SetEnvIfNoCase User-Agent "^badbot2" bad_user
SetEnvIfNoCase User-Agent "^badbot3" bad_user
Deny from env=bad_user
Замените badbot1, badbot1 и т. д. именами ботов из вашего журнала. Это закроет посторонним программам доступ к вашему сайту.
7. Кэширование файлов
Кэширование файлов — еще один способ ускорить загрузку вашего сайта. Вот то, что вам нужно прописать в .htaccess:
<FilesMatch ".(flv|gif|jpg|jpeg|png|ico|swf|js|css|pdf)$">
Header set Cache-Control "max-age=2592000"
</FilesMatch>
Вы можете добавить больше типов файлов (или удалить некоторые из них) в перечисленныq в данном примере список файлов. Вы также можете указать время сохранения файлов в кэше (в секундах) при помощи переменной max-age.
8. Отключение кэширования для разных типов файлов
Если вы не хотите кэшировать определенные типы файлов, можно не включать их в список. Однако иногда файлы могут сохраняться в кэше даже не будучи явно перечисленными в списке, в этом случае вы можете отключить кэширование для них индивидуально. Чаще всего отключать кэширование требуется для динамических файлов, таких как сценарии. Пример требуемого для этого кода:
<FilesMatch ".(pl|php|cgi|spl|scgi|fcgi)$">
Header unset Cache-Control
</FilesMatch>
Просто укажите типы файлов, для которых нужно отключить кэширование.
9. Обход диалога загрузки
По умолчанию при попытке загрузить файл с веб-сервера отображается диалог, который спрашивает вас, хотите ли вы сохранить файл или открыть его. Этот диалог особенно раздражает при скачивании больших медиа- или PDF-файлов. Если файлы, которые вы загрузили на сервер, предназначены исключительно для скачивания, вы можете облегчить жизнь пользователей, установив загрузку действием по умолчанию. Добавьте в. htaccess следующее:
AddType application/octet-stream .pdf
AddType application/octet-stream .zip
AddType application/octet-stream .mp3
10. Переименование файла .htaccess
Если вы по каким-то причинам хотите переименовать файл .htaccess, то вы можете это сделать. Теоретически, переименование файла .htaccess не должно вызывать проблем с приложениями, запущенными на вашем сервере, но если вы заметите появление ошибок выполнения сценариев после переименования файла, то просто переименуйте его обратно.
AccessFileName htac.cess
Кроме того, необходимо обновить все записи, в которых упоминается файл .htaccess, иначе возникнет множество ошибок.
11. Замена стартовой страницы сайта
Если вы хотите установить главную страницу, отличную от стандартной (index.html, index.php, index.htm и т. д.), добавьте следующий код в файл .htaccess:
DirectoryIndex mypage.html
Замените mypage.html на URL страницы, которую вы хотите использовать в качестве главной.
12. Перенаправление на защищенное соединение HTTPS
Если вы используете HTTPS и хотите перенаправить пользователей на защищенные страницы вашего сайта, добавьте в файл .htaccess следующие строки:
RewriteEngine On
RewriteCond %{HTTPS} !on
RewriteRule (.*) https://%{HTTP_HOST}%{REQUEST_URI}
13. Ограничение максимального размера загружаемых файлов в PHP, максимального размера передаваемых данных, максимального времени выполнения скриптов и т.п.
.htaccess позволяет устанавливать некоторые значения, непосредственно влияющие на работу PHP приложений. Например, если вы хотите установить в PHP ограничение на размер загружаемых файлов, чтобы не забивать хостинг большими файлами:
php_value upload_max_filesize 15M
Вы можете установить любое значение, в примере размер файла ограничен 15M (MБ). Помимо этого вы можете ограничить максимальный размер передаваемых при загрузке в PHP данных:
php_value post_max_size 10M
Вы можете заменить 10М на любое требуемое вам значение. Если вам не требуется постоянное выполнение скриптов, вы можете ограничить время их выполнения с помощью строки:
php_value max_execution_time 240
240 — время выполнения (в секундах), после которого скрипт будет остановлен, вы можете изменить это значение на любое другое. Наконец, если вы хотите ограничить время анализа скриптом исходных данных, используйте следующий код:
php_value max_input_time 180
Установите вместо 180 любое требуемое вам время (в секундах).
14. Скрытие типов файлов
Иногда нужно, чтобы пользователи не знали, какие типы файлов находятся на вашем сайте. Один из способов скрыть эту информацию — сделать так, чтобы все ваши файлы отображались как HTML или PHP файлы:
ForceType application/x-httpd-php
ForceType application/x-httpd-php
И это лишь часть того, что может .htaccess, а вообще он позволяет сделать гораздо больше. Например, вы можете установить автоматический перевод страниц вашего сайта, установить часовой пояс сервера, удалить WWW из URL-адресов или использовать причудливые представления каталогов и т.д. Но в любом случае, прежде чем начинать эксперименты с файлом .htaccess, всегда сохраняйте резервную копию оригинального .htaccess, чтобы при возникновении проблем можно было быстро восстановить работу сайта.
Источник
UPD (спасибо akuma) расширение РНР для скрытия формата файлов приведено как пример и использование этого трюка в реальном проекте может оказаться небезопасным
Файл .htaccess позволяет производить дополнительную конфигурацию веб-сервера Apache для:
- переадресации на другой домен
- контроля доступа к сайту
- изменения значений директив PHP
- отображения собственных страниц ошибок
Директивы для веб-сервера Apache2.4+ отличаются от Apache2.2. В примерах указаны директивы для обеих версий web-серверов.
Для контроля доступа к сайту можно использовать следующие директивы:
Важно: нельзя использовать директивы для веб-сервера Apache2.4+ и Apache2.2 одновременно. Это может привести к некорректной работе сайта.
Домены с кириллическими символами
При использовании кириллических доменных имён в файле .htaccess, их необходимо указывать в формате Punycode. Перекодировать их можно с помощью сервиса.
Отклонить все запросы
Apache 2.2
Apache 2.4
Разрешить все запросы
Apache 2.2
Apache 2.4
Запретить доступ на основе имени хоста
Apache 2.2
Apache 2.4
Использование директив <RequireAll> и Require all granted обязательны если используется более сложная конструкция.
Запретить доступ на основе IP-адреса
Для ограничения доступа к сайту с определённых IP-адресов в файл .htaccess требуется добавить:
Apache 2.2
Apache 2.4
Запретить доступ к определенному файлу
Настройка ограничения доступа к определённым файлам производится путем добавления в .htaccess директив:
Apache 2.2
Apache 2.4
где ПУТЬ_К_ФАЙЛУ - необходимо заменить на целевой файл, а IP — на IP-адрес, для которого будет запрещен доступ.
Разрешить доступ к определенному файлу с IP-адреса
Настройка ограничения доступа к определённым файлам производится путем добавления в .htaccess директив:
Apache 2.2
Apache 2.4
где ПУТЬ_К_ФАЙЛУ - необходимо заменить на целевой файл, а IP — на IP-адрес, для которого будет запрещен доступ.
Полный список и подробности того, какие директивы доступны для редактирования через файл .htaccess, предоставлены в официальной документации PHP и веб-сервера Apache2.4:
Запрет по IP доступа к сайту в файле .htaccess
Спамеры достали, а значит пришло время уделить им внимание. В этой статье рассмотрим, как запретить доступ к сайту с определённых IP с помощью изменения настроек сервера Apache в файле .htaccess
. Это очень радикальный способ отвадить недобросовестных посетителей от сайта. Радикальность данного способа заключается в том, что данным способом можно отключить показ сайта (или папки на сайте) пользователю по его 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. Запрет доступа к ресурсам сервера:
Резюме
Таким образом можно закрыть доступ спамерам до сайта.
Радикальное решение, но которое точно отвадит их от вашего сайта.
Также можно ограничить доступ по IP не ко всему сайту, а только к определённой его части. Для этого нужно создать файл .htaccess
в той папке, доступ к которой нужно ограничить. Это позволит допускать пользователей только к определённым ресурсам на сайте, запрещая доступ в другие.
Спамер может быть не один или один, но заходящих с разных IP-адресов. Для того, чтобы запретить все IP с которых заходят пользователи, доступ которых нужно ограничить в последней строчке через пробел нужно ввести все IP адреса, которые нужно заблокировать.
Спамеры больше не пройдут! =)
Продолжение о борьбе со спамерами читать → в этой статье.
Заберите ссылку на статью к себе, чтобы потом легко её найти 😉
Выберите, то, чем пользуетесь чаще всего:
Спасибо за внимание, оставайтесь на связи! Ниже ссылка на форум и обсуждение ; )
Многие пользователи серверов Apache для настройки работы сайта используют файл конфигураций htaccess. С одной стороны, нельзя назвать это решение мудрым и стоящим, поскольку чересчур наполненный файл htaccess может навредить скорости работы сервера. Но некоторые опции этого конфигурационного документа сложно настроить без использования файла htaccess, например, ограничение доступа к файлу, каталогу или сайту в целом. В приведенной ниже статье вы узнаете, как использовать эту функцию файла htaccess, и для чего она нужна.
Кому нужен запрет доступа и как им пользоваться
Стоит учитывать, что файл htaccess позволяет не только делать запрет доступа сразу ко всему сайту, но и создавать белые и черные списки пользователей. То есть вы сможете, к примеру, закрыть доступ для некоторых IP. Точно так же вы сможете снять запрет только для выбранных вами IP, создав тем самым белый список пользователей. Но зачем вообще использовать эту функцию?
Порой обстоятельства так складываются, что к сайту нельзя никого подпускать. К примеру, когда на нем ведутся какие-то важные техработы. В этот момент вы можете заблокировать доступ для каждого пользователя, кроме своего IP. Тогда посетители не будут присутствовать на ресурсе, когда он в нестабильном состоянии. Кроме того, используя черный список пользователей, вы сможете запретить доступ к сайту для IP недоброжелательных посетителей, которые спамят, флудят, ругаются и плохо обзываются о вашем портале.
Таким образом, вы сможете закрыть свой сайт от нежеланных гостей, создав подобие бан-листа. И во всем этом вам поможет файл htaccess с его незаменимыми директивами.
Как запретить доступ к файлу, каталогу, сайту через htaccess
Для управления уровнем доступа к сайту, файлу или папке вам необходимо будет использовать директивы Deny и Allow. Первая директива нужна, чтобы запретить доступ, а вторая — чтобы разрешить. Во многом эти директивы зависят от того, куда вы поместите файл htaccess. Если он будет расположен в корневом каталоге, то запрет или разрешение будет действовать на весь сайт целиком. Если же вы загрузите htaccess в какую-то папку, то опции Deny и Allow будут действовать на каталог, в котором находится, а также на внутренние папки. Именно таким образом и блокируют доступ к определенным директориям и разделам сайта.
Синтаксис директив запрета и разрешения предельно прост. Начинать опцию следует со строки Order Deny, Allow. Она обозначает активацию функций Deny и Allow. А в следующих строках вы должны указать конкретно, какие условия доступа вы планируете установить. Так, чтобы закрыть доступ для всех, вам нужно прописать всего две строки:
Order Deny,Allow - открытие функции.
Deny from all - указание правила.
Нижняя строка говорит: «Запретить (deny) для (from) всех (all)». Точно таким же образом вы можете вместо Deny прописать Allow для активации противоположной опции. Но поскольку эта опция активирована по умолчанию, нет смысла ее дополнительно указывать в htaccess. Allow from скорее используют для того, чтобы указывать исключения, то есть чтобы сформировать белый список пользователей.
Чтобы открыть доступ только для некоторых IP, вам нужно сначала закрыть сайт или каталог для всех остальных. Вот пример создания белого списка для двух адресов IP:
Order Deny,Allow
Deny from all
Allow from 136.68.81.3, 135.67.82.1 - IP писать через запятую.
По аналогии с написанной функцией вы сможете блокировать только определенные адреса IP. Только для этого вам нужно будет сначала прописать разрешение для всех через Allow from all, а потом указывать через Deny from IP-адреса, либо названия хостов, для которых доступ строго воспрещен.
Для ограничения прав на файл через закрытие доступа, вам нужно создать отдельный документ htaccess, и поместить его в директорию, где содержится файл. Директива запрета для файла выглядит примерно так же, как опция ограничения доступа для сайта или каталога. Разница только в том, что для ограничения файла вам понадобится специальный тег . В открывающем теге необходимо указать название объекта, доступ к которому следует ограничить. Вот пример запрета для всех пользователей к файлу passvd.txt:
<Files "passvd.txt"> - тег с именем файла
Order Deny,Allow - открытие опции
Deny from all - правило директивы
</Files> - закрытие тега
Теперь вам осталось поместить htaccess в каталог, где содержится файл passvd.txt, и никто не сможет добраться к нему через сайт. Как показывает практика, обычно доступ к файлу блокируют не полностью, а указывают исключения для доверенных IP-адресов. К примеру, вы сможете указать ограничение для всех, кроме своего IP, чтобы вы смогли потом скачать файл с паролями. Вот пример такого ограничения:
<Files "passvd.txt">
Order Deny,Allow
Deny from all
Allow from 144.66.55.2
</Files>
Если в каталоге содержится не один файл, который вам нужно защитить, а несколько, то вы можете прописать сразу много директив для каждого отдельного объекта. Но это неудобно. Кроме того, много опций в htaccess нагружают сервер, потому куда разумнее активировать другую блокировку — запрет доступа по типу файлов в каталоге, а не по их наименованию. Вам нужно будет использовать точно такую же конструкцию директив, только вместо имени файла необходимо через символ «|» указывать расширения, которые пользователи не смогут скачать с данной папки. Вот пример тег запрета для загрузки картинок определенного формата:
<Files "\.(jpg|jpe?g|ico)$">
Директивы
</Files>
Чтобы сделать запрет для других форматов, вам нужно будет лишь сменить названия расширений в скобках. Сделать это несложно, как и указать белый или черный список пользователей. Сама конструкция в кавычках всегда остается одинаковой.
Учтите, что многие пользователи используют не статический IP, а динамический, потому указывать один адрес в запрете глупо. Куда разумнее писать в запрет диапазон IP-адресов. Для этого найдите Whois-сервис и определите CIDR IP-адреса, а затем укажите его в запрете. Тогда даже при временной смене адреса, пользователь не сможет зайти на портал.
Похожие статьи
В случае использования для работы сайтов веб-сервера Apache, есть возможность ограничения доступа с помощью файла .htaccess, действие которого распространяется либо на одну директорию, либо на все вложенные поддиректории.
Существует несколько видов ограничения доступа, которые могут пригодиться в разных случаях. Рассмотрим эти возможные варианты:
Ограничение по IP-адресу
Конструкция подобного ограничения очень проста:
order allow,deny deny from 1.1.1.1 deny from 2a01:230::6d0a:8406:c4e4:9e19 deny from 10.10 deny from 192.168.0.0/24 deny from domain.dom allow from all
Системные требования для работы этих правил: Веб-сервер Apache 2.2.x с подключенным модулем mod_authz_host.
В этом примере я привел все возможные вариации ограничения доступа. И ниже разберем каждую строку в отдельности.
Первая строка задает логику работы последующих правил. В каком порядке будут выполняться блокирующие и разрешающие правила.
Вторая и третья строки блокируют доступ по конкретным IP-адресам (ipv4 и ipv6 соответственно).
Четвертая строка показывает, что можно указывать частично IP-адрес и в таком случае (как указано в примере) будет обрабатываться как подсеть /16.
Пятая строка — можно блокировать целыми сетями и подсетями, указывая диапазон.
Для работы вариантов блокировки как в шестой строке потребуется включить параметр HostnameLookups.
И, наконец, последняя строка allow from all говорит о том, что всем остальным доступ разрешен.
Ограничение по паролю
Рассмотрим простейший вариант ограничения доступа с авторизацией по логину и паролю
AuthType Basic AuthName "Доступ ограничен паролем" AuthUserFile /path/to/.htpasswd
Системные требования для работы такой конструкции: Веб-сервер Apache 2.2.x с подключенными модулями auth_basic, authn_file.
Генерация пароля
Создание пары «логин-пароль» происходит с непосредственным участием приложения htpasswd, которая входит в дистрибутивную поставку Apache. При запуске без параметров данная утилита выведет справку, перевод которой я располагаю ниже
Использование: htpasswd [-cmdpsD] passwordfile username htpasswd -b[cmdpsD] passwordfile username password htpasswd -n[mdps] username htpasswd -nb[mdps] username password -c Создать новый файл. -n Не обновлять файл, вывести результат на экран. -m Зашифровать пароль с помощью [[MD5]]. -d Зашифровать пароль с помощью [[CRYPT]] (по умолчанию). -p Не шифровать пароль (открытый текст). -s Зашифровать пароль с помощью [[SHA]]. -b Указать пароль в параметре командной строки. -D Удалить указанного пользователя. На [[Windows]], [[NetWare]] и [[TPF]] системах флаг '-m' используется по умолчанию. На всех остальных системах флаг '-p' может не работать.
Примеры работы htpasswd
Таким образом, чтобы создать файл с логином и паролем для авторизации с зашифрованным паролем в MD5, потребуется выполнить команду:
- htpasswd -bcm /path/to/.htpasswd sampleuser samplepass
Adding password for user sampleuser
Результатом будет файл .htpasswd со строкой
sampleuser:$apr1$i5Kx715D$qkWbaZLztXohMGOdfCUy5/
Для того, чтобы добавить пользователя к уже существующим в файл, выполните команду
- htpasswd -bm /path/to/.htpasswd sampleuser1 samplepass1
Updating password for user sampleuser1
В случае, если в файле указано больше одного пользователя и вам требуется удалить какого-либо, то команда будет выглядеть так:
- htpasswd -D /path/to/.htpasswd sampleuser2
Deleting password for user sampleuser2
Полезные ссылки
Просто запретить по IP доступ к сайту в файле .htaccess
— это слишком радикальная мера борьбы со спамерами, на что и было обращено внимание в предыдущей статье. Веб-сервер Apache предоставляет более гибкий инструмент, которым можно воспользоваться для ограничения прав и свобод лихих спамеров. ))) Ниже будет рассмотрено, как показывать сайт всем без исключения, но запрещать отправлять сообщения методом POST, который используется в большинстве движков форумов, досок объявлений и прочих сервисов, работающих на сайте.
Вернёмся к нашим дорогим и надоедливым друзьям — спамерам
Итак, условие задачи: есть спамер (или группа спамеров), который с изумительной настойчивостью и периодичностью оставляет на сайте сообщения рекламного характера, например:
Его не волнует то, что ссылки на его (наверное, никому не нужный и неинтересный) сайт не индексируются поисковыми машинами. Вы же прописали соответствующие параметры ссылок в rel
из непроверенных источников? 😉
<a href="http://чей-то-сайт.ну" target="_blank" rel="nofollow noopener noreferrer">Непроверенная ссылка</a>
В общем, как показывает практика, спамерам всё равно, для чего они размещают ссылки на сайты и насколько их содержимое релевантно с тем местом, где они их размещают. Заказчик платит, спамер спамит. Наверное так это работает. =)
Для нас важно, чтобы IP спамера записывался в логах сайта. Именно по этому IP мы и отключим возможность спамеру оставлять какие-либо следы своего пребывания на сайте. При этом оставив возможность просматривать сайт.
Почему важно оставить возможность просматривать сайт всеми пользователями?
Сразу поясню, почему важно оставить возможность просматривать сайт всеми пользователями. Если пользователь находится в сети провайдера, использующего общий для всех шлюз (устройство) выхода в интернет, а вы полностью заблокировали доступ к сайту, это приведёт к тому, что вы потеряете всех посетителей из этой сети. Слишком дорогая плата за то, чтобы не убирать за спамером его следы пребывания.
Блокировка метода POST отправки сообщений на сайт с определённого IP в файле .htaccess
Итак, открываем (или создаём) файл .htaccess в нужной папке у себя на сервере и прописываем в него следующие строчки:
<LIMIT POST>
Order allow,deny
allow from all
Deny from 195.154.178.60
</LIMIT>
Как можно догадаться, в контейнете <LIMIT>
с пометкой POST
содержатся инструкции серверу о том, как поступать при получении данных от пользователя методом POST
. А в последней строчке Deny from
содержатся IP адреса наших любимых спамеров, от которых и требуется запретить обрабатывать полученную методом POST
информацию. Всё просто и изящно. =)
Если спамер пользуется прокси-серверами, позволяющими ему спамить с разных IP, то в эту строчку нужно вписать IP адреса, разделяя их пробелами, например:
<LIMIT POST>
Order allow,deny
allow from all
Deny from 79.173.83.153 195.154.178.60
</LIMIT>
Что происходит при блокировке метода POST отправки сообщений на сайт с определённого IP в файле .htaccess
После того, как метод POST
заблокирован для опрепределённых IP, пользователи с этих IP всё также имеют счастье и возможность просматривать содержимое вашего сайта, но… При отправке сообщения с сайта на сервер методом POST
…
…пользователи, IP которых внесён в список в файле .htaccess
увидят сообщение 403: Forbidden
от сервера, что означает запрет доступа к ресурсам сервера:
Что нам и требовалось.
О других способах отправки сообщений на сайт (GET и PUT)
Если ваш сайт отправляет сообщения на сервер не только (и не сколько) методом POST, а методами GET и/или PUT, то можно сразу их тоже заблокировать:
<LIMIT GET POST PUT>
Order allow,deny
allow from all
Deny from 79.173.83.153 195.154.178.60
</LIMIT>
…и жить долго и счастливо, добавляя недобитых спамеров в этот список. =)
Заберите ссылку на статью к себе, чтобы потом легко её найти 😉
Выберите, то, чем пользуетесь чаще всего:
Спасибо за внимание, оставайтесь на связи! Ниже ссылка на форум и обсуждение ; )
Управление доступом к файлам в htaccess
Действие файла .htaccess распространяется на директорию и подкатегории в котором он размещен.
1
Запрет всех файлов в директории
В закрываемой директории нужно поместить файл .htaccess со следующим содержанием:
2
Запрет доступа к файлам
С определенным расширением
<Files .php>
Order Allow,Deny
Deny from all
</Files>
По списку расширений
<FilesMatch ".(htaccess|htpasswd|bak|ini|log|sh|inc|config|psd|fla|ai)$">
Order Allow,Deny
Deny from all
</FilesMatch>
Запрет всех файлов, кроме изображений
Order Deny,Allow
Deny from all
<Files ~ "\.(jpg|jpeg|gif|png)$">
Order Deny,Allow
Allow from all
</Files>
3
Доступ по IP
Разрешить доступ по определенному IP
Order Deny,Allow
Deny from all
Allow from xxx.xxx.xxx.xxx
Запретить IP
Order Allow,Deny
Allow from all
Deny from xxx.xxx.xxx.xxx
Список адресов задается отдельными строками:
Order Allow,Deny
Allow from all
Deny from xxx.xxx.xxx.xxx
Deny from xxx.xxx.xxx.xxx
Deny from xxx.xxx.xxx.xxx
php — доступ к файлу через ip диапазон
Переполнение стека- Товары
- Клиенты
- Случаи использования
- Переполнение стека Публичные вопросы и ответы
- Команды Частные вопросы и ответы для вашей команды
- предприятие Частные вопросы и ответы для вашего предприятия
- работы Программирование и связанные с ним технические возможности карьерного роста
- Талант Нанимать технический талант
Ограничить доступ с помощью .htaccess и IP Deny Manager
Контроль доступа является важной частью управления доступом посетителей на ваш сайт. Посетители могут быть ограничены в доступе к вашему сайту, используя IP deny manager в вашей cPanel или добавив код Allow
или Deny
в ваш файл .htaccess.
Это особенно полезно, когда роботы или злонамеренные посетители из определенных стран или доменных адресов спамят ваш сайт или размещают на своем сайте комментарии, которые вам не нужны.В следующих разделах объясняется, как блокировать IP-адреса в файле .htaccess и с помощью диспетчера запрета IP-адресов cPanel.
Важно! Если вы используете VPS или выделенный сервер, вы можете заблокировать IP-адреса по всему серверу. Пожалуйста, нажмите здесь, чтобы узнать, как.
Контроль доступа с помощью вашего .htaccess
Контроль доступа по IP-адресу
Директивы Allow
и Deny
позволяют разрешать и запрещать доступ на основе IP-адреса или имени хоста сервера исходящих посетителей.Синтаксис следующий:
Разрешает IP 122.102.1.2 доступ к вашему веб-сайту .
Разрешить с 122.102.1.2
Denys IP 25.122.6.3 доступ к вашему сайту .
Запретить с 25.122.6.3
Добавление этих строк кода предотвратит или предоставит доступ пользователю с этого IP-адреса.
Использование Для заказа
для объединения Разрешить
и Запретить
Вы можете объединить директиву Deny
и Allow
в одном месте, используя Order
.Смотрите следующий пример кода.
Приказ отказать, разрешить Запретить все Разрешить с 203.25.45.2
Это позволяет запретить доступ всем посетителям и в то же время разрешить доступ только определенным посетителям.
Контроль доступа по имени хоста
Вы можете заблокировать посетителей в .htaccess, используя имя хоста посетителя. Ниже приведен синтаксис для блокировки имен хостов от доступа к вашему сайту.
Запретить от нежелательного доменногоВажно! ЭТО НЕ РЕКОМЕНДУЕТСЯ. Если вы используете имя хоста в правиле
Deny
в .htaccess, Apache преобразует ваш журнал Apache в имена хостов вместо IP-адресов. Это лишит вас возможности просматривать журналы с IP-адресами. Вы захотите использовать IP-адрес вместо имени хоста; если только вы не хотите проверить доступ к своему сайту только по имени хоста.Объединение
, отказ в
с IP и HostВы можете комбинировать IP-адреса и имена хостов вместе с одним и тем же синтаксисом.Также вы можете указать только часть домена. Ниже приведен синтаксис для объединения IP-адреса и имени хоста.
Запретить от 192.168.205 Запретить от unwanted-domain.com unwanted-domain-2.com Запретить от domain-partКонтроль доступа с использованием IP Deny Manager
cPanel дает вам возможность заблокировать определенные IP-адреса от просмотра и доступа к вашему веб-сайту. Ниже приведены шаги для добавления IP-адресов на ваш сервер, чтобы заблокировать их доступ к вашему сайту.
- Войдите в свою cPanel.
Перейдите в раздел Security и щелкните значок IP Blocker . В следующей таблице объясняется, какие форматы вы можете использовать для блокировки Ips.
Форматы IP (взяты из cPanel) Один IP-адрес 10.5.3.333 (только этот IP будет заблокирован) Предполагаемый диапазон 10.5.3.3-10.5.3.40 (Блокирует диапазон IP-адресов, которые соответствуют параметрам между IP 10.5.3.3 и 10.5.3.40) CIDR Формат 10.5.3.3/32 (блокирует все IP в диапазоне 10.3.3 от 10.3.3.00 до 10.3.3.32) Подразумеваемый IP-адрес 10. Предполагает 10. *. *. * (Блокирует все IP, начиная с 10.) Введите IP-адрес, который вы хотите заблокировать.
Нажмите кнопку Добавить .
Вы будете перенаправлены на страницу успеха.
Нажмите Вернуться назад .
Теперь вы увидите IP-адрес в списке заблокированных. IP не будет иметь доступа к вашему сайту.
,Как мне запретить доступ к моему сайту с помощью файла .htaccess? - База знаний DreamHostСоздание файла .htaccess на вашем веб-сервере DreamHost
В следующей статье приведены инструкции по созданию файла .htaccess на вашем веб-сервере:
Если файл уже существует, ознакомьтесь с инструкциями по его обновлению в следующих статьях (в зависимости от того, используете ли вы FTP-клиент или SSH):
После создания файла вы можете добавить к нему приведенные ниже примеры кода.
Запретить доступ к файлам
Отказ в доступе к определенным расширениям файлов
Следующий код заставляет любой файл, оканчивающийся на .inc, выдавать ошибку 403 Forbidden при посещении:
Заказать Разрешить, Запретить Запретить все Files> Отказ в доступе к «скрытым» файлам
Имена файлов, начинающиеся с точки, считаются «скрытыми» в UNIX. Обычно вы не хотите обслуживать их посетителям.
DreamHost уже запрещает извлечение ».htaccess 'и' .htpasswd ', но вы можете рекурсивно запретить любой доступ ко всем скрытым файлам, поместив следующее в файл верхнего уровня .htaccess:
Запретить доступ к папкам
Отказ в доступе к списку каталогов
Если в вашем каталоге нет индексного файла, все ваши файлы будут перечислены в списке каталогов для просмотра любым пользователем. Следующий код заставляет этот список каталогов выдавать ошибку 404 Forbidden при посещении:
Отказ в доступе в определенный час дня
Если вы хотите заблокировать доступ к файлам в каталоге в определенное время суток, вы можете сделать это, добавив следующий код в.| /) бла (/ | $) - [F]
Запрет доступа с определенных IP-адресов
Если у вас есть проблемы с определенными посетителями вашего сайта, вы можете легко их забанить. Есть два разных способа запрета посетителей:
- , используя их IP-адрес, или
- доменное имя, с которого они посещают.
Вот пример, который запрещает пользователю по его IP-адресу:
отказать от 173.236.241.100Когда пользователь пытается подключиться к вашему сайту с этого определенного IP-адреса, вместо этого он видит страницу 403 Forbidden.Если вы хотите заблокировать целый блок IP-адресов, просто оставьте последний октет выключенным. Например:
Это запрещает доступ любому, кто использует IP в диапазоне от 173.236.241.0 до 173.236.241.255.
Следующая ссылка — полезный онлайн-инструмент, который автоматически генерирует для вас диапазон IP-адресов:
Разрешение доступа с определенного IP
Если вам нужно запретить доступ к вашему сайту всем, но при этом разрешить себе или другому конкретному IP-адресу посещать его, вы можете использовать что-то вроде этого:
заказ отказать, разрешить отрицать все разрешить отОтказ в доступе из определенного домена
Это запрещает доступ любому, кто подключается к вашему сайту с www.example.com. Если кто-то нажимает на ссылку на example.com, которая перенаправляет на ваш сайт, он видит ошибку 403 Forbidden:
SetEnvIfNoCase Referer "example.com" bad_referer Заказать Разрешить, Запретить Разрешить из ВСЕХ Запретить от env = bad_refererВ этом примере выдается ошибка 500 Internal Server для каждого, кто ссылается на example.com:
RewriteEngine on RewriteCond% {HTTP_REFERER} пример \ .com [NC, OR] RewriteRule. * - [F]Следующий пример перенаправляет любого посетителя, подключающегося из примера.http://example.com/ RewriteRule / * http://www.google.com [R, L]
См. Также
,Как заблокировать IP-адрес с помощью .htaccess
Быстрое сообщение сегодня, показывающее несколько различных способов заблокировать посетителей по их IP-адресу . Это может быть полезно по ряду причин, в том числе для того, чтобы не допустить, чтобы какой-то дурацкий сценарист притеснял ваш сайт, или чтобы какой-то жуткий неудачник сталкер не скрывался на ваших форумах, или даже заставил замолчать бесконечное количество сердитых троллей, которые, кажется, никогда не понимают. Так много причин, и так много способов их заблокировать. Продолжите чтение, чтобы узнать, как заблокировать любой IP-адрес, используя тонкий фрагмент.Htaccess.
Заблокировать определенный IP-адрес
Это то, что большинство посетителей этой страницы захотят использовать:
Запретить с 123.123.123.123
Просто измените IP-адрес на тот, который вы хотите заблокировать, а затем добавьте код в корневой файл .htaccess вашего сайта.
Заблокировать определенный домен
Чтобы заблокировать определенный домен, добавьте в корневой файл .htaccess вашего сайта следующее:
Запретить с 123.123.123.123/255.255,255,0
Затем измените значения IP-адреса и маски сети в соответствии с доменом, который вы хотите заблокировать.
Блокировка нескольких IP-адресов
Если у вас есть несколько IP-адресов, которые вы хотели бы заблокировать, вы можете запретить их все сразу:
Запретить от 111.111.111.111 222.222.222.222 333.333.333.333
Это заблокирует три указанных IP-адреса:
, 111.111.111.111,
,, 222.222.222.222,
и, 333.333.333.333
. Отредактируйте IP-адреса, чтобы они соответствовали тем, которые вы хотите заблокировать, а затем добавьте строку в ваш файл .htaccess.Блокировать всю подсеть
Также возможно заблокировать весь диапазон IP-адресов. Вот пример, где мы блокируем каждый IP, который начинается с
123.123
:Запретить с 123.123
Чтобы заблокировать несколько диапазонов, мы можем сделать это:
Deny от 111 222,222 333,333,333
Как только вы получите образец, небо — предел.Просто помни о том, что ты делаешь; блокирование целого ряда IP-адресов — серьезное дело.
Блочный IP на основе CIDR
Если вам известен конкретный CIDR для IP-адреса, который вы пытаетесь заблокировать, вы можете использовать этот синтаксис:
Запретить с 123.123.123.0/24
Как и все эти правила, вы можете отредактировать в соответствии с вашей целью, а затем добавить в .htaccess.
Блок IPv6 адресов
IPv6-адреса чаще используются каждый день.Если вы хотите заблокировать один через .htaccess, вот правильный синтаксис:
Запретить с 2001 года: 0db8: 0000: 0042: 0000: 8a2e: 0370
Вы также можете использовать любое из этих обозначений, в зависимости от цели:
Запретить с 2001 года: 0db8: 0000: 0042 Запретить с 2001 года: 0db8: 0000: 0042: 0000/10
Блок IP на основе регулярного выражения
Этот метод IP-блокировки проверяет все адреса на соответствие предопределенному регулярному выражению с помощью
RewriteCond
/RewriteRule
:
Вероятно, есть более эффективный способ написания регулярных выражений в предыдущем примере, но он определенно должен выполнить свою работу.
Перенаправление на основе IP-адреса
Вместо того, чтобы блокировать посетителей по IP-адресу, вы можете перенаправить их в другое место. Вот как это сделать, используя Apache
mod_rewrite
:
RewriteCond% {REMOTE_ADDR} ^ 111 \.111 \ 0,111 \ 0,111 $ RewriteRule. * /Index.php [R = 301, L] IfModule> Вы можете изменить IP-адрес, конечно, чтобы он соответствовал тому, на который вы ориентируетесь. Затем отредактируйте файл
/index.php
, чтобы он соответствовал URI, на который следует отправлять любые соответствующие запросы. Вот еще один пример, чтобы проиллюстрировать технику:
RewriteCond% {REMOTE_HOST} 123 \ .123 \ .123 \ .123 RewriteCond% {REQUEST_URI} /requested-page\.html RewriteRule. * / Только для вас.html [R = 301, L] IfModule> Здесь мы проверяем IP и запрошенный URI. Если есть совпадение, то запрос будет отправлен на
/just-for-you.html
. Чтобы использовать это перенаправление, просто измените IP-адрес, запрашиваемую страницу и страницу перенаправления. Скопируйте и вставьте код в свой файл .htaccess и загрузите на свой сервер.Блокировать специфические типы запросов
Предположим, что вы хотите заблокировать, например, публикацию контента через форму на вашем сайте.Это можно сделать с помощью контейнера Apache
:
Заказать Разрешить, Запретить Разрешить от всех Запретить с 123.123.123.123 Limit> Обратите внимание на
POST
, указанный в контейнере? Это ключ, и вы можете изменить его на любой тип запроса.
Вот пример обратного случая, когда мы хотим разрешить публикацию только с нашего собственного IP-адреса, в то же время отклоняя запросы
POST
для всех остальных:
Заказать Запретить, Разрешить Отрицать все Разрешить от 111.111.111.111 Limit> Обратите внимание на отмену директивы
Order
: здесь мы сначала отрицаем, а затем разрешаем, что обеспечивает логику, необходимую для этой техники.Полная запись
Несмотря на то, что можно просто добавить одну строку, например
Deny из 123.123
, в свой файл .htaccess, существует более полный синтаксис, который можно использовать. Вот пара примеров:Заказать Разрешить, Запретить Разрешить от всех Запретить с 123.123.123.123 / 26
Обратите внимание на дополнительную логику, связанную с этим более «правильным» синтаксисом: здесь мы указываем директиву
Oder
, которая позволяет нам изменять порядок по умолчанию Apache, который составляетAllow, Deny
. Поэтому, когда мы включаем только одинDeny из строки
(как в наших предыдущих примерах), это работает, потому что мы используем порядок по умолчаниюAllow, Deny
. Вот почему хорошо исключать лишние строки. Или, при желании, мы могли бы явно изменить порядок:Заказать Запретить, Разрешить Отрицать все Разрешить от 111.111,111,111
Здесь мы сначала запрещаем доступ каждому, а затем разрешаем только указанный адрес. Комбинируя этот синтаксис с контейнером
, мы можем делать классные вещи, такие как включение запросов POST и PUT только с нашего собственного IP-адреса. Например:
Заказать Запретить, Разрешить Отрицать все Разрешить от 111.111.111.111 Limit> Сочетая эти методы с предыдущими примерами, ваши полномочия по блокировке IP завершены.
Напоминание
Не забывайте всегда делать резервную копию всего, что вы намереваетесь изменить, а затем тщательно тестировать, прежде чем применять какие-либо новые правила. Будьте осторожны и повеселитесь.
Ресурсы
,