Загрузка...

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

Тема в разделе Backend создана пользователем RaysMorgan 27 мар 2016. 489 просмотров

Загрузка...
  1. RaysMorgan
    RaysMorgan Автор темы 27 мар 2016 https://lolz.live/support-tickets/open 51 794 7 мар 2013
    Метод основывается на том, что большинство ботов вообще не поддерживают 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
     
Top