Ваш ключ: необходима авторизация | MyProxy - бесплатный обменник валидных прокси между пользователями форума.

Интересный способ защиты от ботов на PHP

Тема в разделе PHP, создана пользователем ERROR404, 27 мар 2016.

Войдите для ответа
  1. ERROR404 Администратор

    ERROR404
    Статус:
    Вне сети
    Метод основывается на том, что большинство ботов вообще не поддерживают JavaScript, а если они и поддерживают его, то должны магическим образом научиться считывать содержимое нашего "антибот поля".
    Данный способ защитит вас от спам ботов на 100%.

    В нужную форму, например, регистрация вставляем скрытый input и наш javascript

    <form method="POST">
    <input type="hidden" name="check" class="check">
    <! -- Остальной код -->
    </form>
    <script>
       $(document).ready(function () {
          $('.check').val('<? echo $token;?>');
       });
    </script>
    
    Скрипт будет вставлять значение токена ($token) в скрытый input после полной загрузки страницы.


    В php файл вставляем:
    $token = md5(uniqid(mt_rand() . microtime()));
    $_SESSION['token'] = $token;
    Что делает код? Генерирует уникальный токен в MD5 и кладёт его в сессию.

    Далее, где у вас происходит обработка данных, вставляем код (пример):
    if (isset($_POST['submit'])) {
    $clientToken = $_POST['check']; // данные input'a из формы
    if ($serverToken) { // тут мы проверяем, не задана ли переменная, иначе в сессии будет другой токен, который сгенерируется только после нажатия на кнопку.
       $serverToken = $_SESSION['token'];
    }
    if ($clientToken != $serverToken) { // Если токены не совпадают, выдаем ошибку.
           exit;
       }
    // остальной код
    }
    

    Аналогичным способом можно сделать проверку через $_COOKIE
     
    27 мар 2016 #1
Top