Запрет посетителей по рефереру в .htaccess: эффективные методы и примеры кода

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

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

RewriteEngine On
RewriteCond %{HTTP_REFERER} example\.com [NC]
RewriteRule ^ - [F]

В этом примере любой запрос, исходящий от «example.com», будет отклонен с ответом 403 «Запрещено».

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

RewriteEngine On
RewriteCond %{HTTP_REFERER} !^http://allowedreferrer\.com [NC]
RewriteRule ^ - [F]

В этом случае запросы от «allowedreferrer.com» будут разрешены, а запросы от любого другого реферера будут отклонены.

Метод 3: блокировка доступа от нескольких рефереров.
Чтобы заблокировать доступ от нескольких рефереров, вы можете использовать символ |(вертикальная черта), чтобы разделить рефереры в RewriteCondдиректива:

RewriteEngine On
RewriteCond %{HTTP_REFERER} referrer1\.com [NC,OR]
RewriteCond %{HTTP_REFERER} referrer2\.com [NC]
RewriteRule ^ - [F]

В этом примере запросы от «referrer1.com» или «referrer2.com» будут отклонены.

Метод 4: разрешить доступ от нескольких рефереров
Аналогично вы можете разрешить доступ от нескольких рефереров с помощью оператора !(отрицание) и |(вертикальная черта) ) символ:

RewriteEngine On
RewriteCond %{HTTP_REFERER} !^http://allowedreferrer1\.com [NC,OR]
RewriteCond %{HTTP_REFERER} !^http://allowedreferrer2\.com [NC]
RewriteRule ^ - [F]

В этом случае запросы от любого реферера, кроме «allowedreferrer1.com» и «allowedreferrer2.com», будут отклонены.

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