Я прочитал одну возможную меру, чтобы отфильтровать спам-боты и хочу получить мнения (советы).
Мера такова:
1) Форма входа в систему напрямую недоступна. Я имею в виду, если кто-то войдет в www.domain.com/login.php, он будет перенаправлен на индекс или что-то вроде этого.
2) На index.php находится кнопка Login. Когда посетитель нажимает на Login, появляется всплывающая форма входа. После входа в систему я проверяю $ _SERVER ["HTTP_REFERRER"]. Если это не login.php, тогда ошибка (сбой)
Является ли такая мера полезной? Может быть вместо $ _SERVER ["HTTP_REFERRER"] может использовать что-то еще? Является ли такой метод разумным?
Я бы сказал: НЕ ДЕЙСТВИТЕЛЬНО . Но есть лучшее решение, см. Ниже.
Проблема в том, что хорошие боты могут делать все, что могут сделать люди. Большинство ботов даже «лучше», чем люди, потому что они знают, как работают системы регистрации и т. Д.! Использование JavaScript / Iframe / AJAX-конструкций для предотвращения ботов поможет против обычных искателей, которые просто ищут формы ввода текста и ввода пароля. И даже если ваш сайт использует сверхъестественные косвенные формы для входа в систему, даже тогда кто-то может создать бота именно для этого случая использования.
Хорошее решение этой проблемы:
Использование блокировщика блокировки с задержкой по времени! Есть учебник о том, как отложить – и, наконец, даже заблокировать – войти в систему после критического количества неудачных логинов здесь: http://www.codedevelopr.com/articles/throttle-user-login-attempts-in-php/
Кроме того, используйте высококачественный captcha после первого неудачного входа.
Для действительно плохих парней: если вы получаете массу логинов с помощью специального IP-адреса, заблокируйте этот IP-адрес. Это довольно продвинутая, но общая практика.
(учтите: автор этого учебника по-прежнему использует mysql_query, который устарел уже много лет. Вы должны сделать это с помощью mysqli или PDO.)