Недавно мой сайт был забит тысячами POST-запросов от различных ботов.
Вместо того, чтобы использовать подход, блокирующий этих ботов на основе их пользовательского агента, я решил найти способ заблокировать все отправленные POST-запросы. к мой веб-сайт и разрешить все запросы POST от в пределах мой веб-сайт.
Я придумал следующее:
RewriteEngine on
RewriteCond %{REQUEST_METHOD} POST
RewriteCond %{HTTP_HOST} !.*mydomain.com.*
RewriteRule ^.* - [F,L]
но почему-то не работает. Любые идеи?
Спасибо!
Если вы ищете людей, которые не пришли с mydomain.com во время POST, то вам нужно %{HTTP_REFERER}
не %{HTTP_HOST}
. HTTP_HOST - это Хост: заголовок из запроса HTTP / 1.1 созданный клиентом, что может быть полезно, если боты просто обращаются к вашему IP, не утруждая себя поиском имени хоста вашего сайта. Примеры использования %{HTTP_REFERER}
Взгляни на это сообщение на форуме о защите от "хотлинкинга" ... из примеров защиты от хотлинкинга следует отметить, что ваша проверка REFERER должна включать всю начальную часть URL-адреса, иначе кто-то может зарегистрироваться "mydomain.comasdfjkl.com "или просто создайте страницу на своем сайте" example.com/mydomain.com.html ", любой из которых будет соответствовать вашему текущему состоянию.
В действительности, однако, поле Referer: легко подделать, и есть несколько людей, которые отключили Referer по соображениям конфиденциальности, которые больше не смогут использовать POST-формы на вашем веб-сайте. Это может стать хорошей первой линией защиты, но если ваша цель - защитить форму от спам-ботов, вам нужно сделать больше.
Если вы пытаетесь защитить форму, написанную на PHP или другом языке, который может использовать сеансы, вы можете победить некоторых ботов, просто установив флаг в сеансе при загрузке пустой формы, а затем удалив флаг при сохранении формы. (отклонение формы, если флаг не был установлен). Это потребует, чтобы бот получил файл cookie сеанса, загрузил пустую форму и, наконец, сохранил форму в указанном порядке. Вы потеряете людей, которые не доверяют вам файл cookie сеанса, но вы получите защиту от глупых ботов и людей, случайно перезагружающих страницу после отправки формы и ее повторной отправки.
Я не эксперт в правилах перезаписи, но вернусь на один шаг назад - убедитесь, что в вашем каталоге Apache conf нет
AllowOverride None
так как это полностью отключит ваш .htaccess.