Не помогает ли доступная форма входа в систему сдерживать ботов?

Я прочитал одну возможную меру, чтобы отфильтровать спам-боты и хочу получить мнения (советы).

Мера такова:

1) Форма входа в систему напрямую недоступна. Я имею в виду, если кто-то войдет в www.domain.com/login.php, он будет перенаправлен на индекс или что-то вроде этого.

2) На index.php находится кнопка Login. Когда посетитель нажимает на Login, появляется всплывающая форма входа. После входа в систему я проверяю $ _SERVER ["HTTP_REFERRER"]. Если это не login.php, тогда ошибка (сбой)

Является ли такая мера полезной? Может быть вместо $ _SERVER ["HTTP_REFERRER"] может использовать что-то еще? Является ли такой метод разумным?

Я бы сказал: НЕ ДЕЙСТВИТЕЛЬНО . Но есть лучшее решение, см. Ниже.

Проблема в том, что хорошие боты могут делать все, что могут сделать люди. Большинство ботов даже «лучше», чем люди, потому что они знают, как работают системы регистрации и т. Д.! Использование JavaScript / Iframe / AJAX-конструкций для предотвращения ботов поможет против обычных искателей, которые просто ищут формы ввода текста и ввода пароля. И даже если ваш сайт использует сверхъестественные косвенные формы для входа в систему, даже тогда кто-то может создать бота именно для этого случая использования.

Хорошее решение этой проблемы:

  1. Использование блокировщика блокировки с задержкой по времени! Есть учебник о том, как отложить – и, наконец, даже заблокировать – войти в систему после критического количества неудачных логинов здесь: http://www.codedevelopr.com/articles/throttle-user-login-attempts-in-php/

  2. Кроме того, используйте высококачественный captcha после первого неудачного входа.

  3. Для действительно плохих парней: если вы получаете массу логинов с помощью специального IP-адреса, заблокируйте этот IP-адрес. Это довольно продвинутая, но общая практика.

(учтите: автор этого учебника по-прежнему использует mysql_query, который устарел уже много лет. Вы должны сделать это с помощью mysqli или PDO.)