Просто запретить по 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>
...и жить долго и счастливо, добавляя недобитых спамеров в этот список. =)
Заберите ссылку на статью к себе, чтобы потом легко её найти!
Раз уж досюда дочитали, то может может есть желание рассказать об этом месте своим друзьям, знакомым и просто мимо проходящим?
Не надо себя сдерживать! ;)