Защита от скликивания СМС баланса сайта для авторизации

Сайт: MLM компании

Проблема: Скликивание смс баланса. Бот запрашивает смс авторизацию.

Результат: Построен точечный слепок бота, всем визитам с этим слепком запрещена отправка смс. Бот заблокирован, на реальных пользователей влияние не распространяется.

Кейс разобьем на две части: "выявление визита бота и его слепка" и "реализация защиты на стороне сайта".

форма смс авторизации

Выявляем визит бота

  1. Для решения проблемы устанавливаем KillBot скрытно - нас не интересуют все боты - нам нужен только один.
    Нажимаем на ссылку "Создать скрипт", и вводим необходимые параметры:
     создаем скрипт KillBot
     
  2. Выбираем опцию скрытой установки, а все остальные параметры оставляем по умолчанию:Выставляем скрытую установку KillBot

     
  3. Наша цель выявить слепок смс бота. Слепок бота будет одинаковым вне зависимости от IP адреса и параметров, которые бот подменяет.
     
  4. Чтобы вычислить слепок бота нам нужно выявить его визит. Сначала мы попытались найти визиты бота в метрике - но там их не было, значит бот метрику заблаговременно вырезает. Так как в метрике визиты бота не отображаются, то мы будем искать его запросах к сайту на стороне CMS.
    Сначала в админке сайта находим запрос бота, который отсылает запрос на отправку смс, отсюда получаем его IP:

     ip адрес бота, который осуществляет смс спам
  5. Мы нашли IP одной из сессий бота: 31.173.80.58. Теперь, нам нужно найти эту же сессию, но уже в системе KillBot.
    Переходим в личный кабинет KillBot и переходим в раздел "Визиты". Там мы отфильтруем визиты по IP адресу и найдем интересующую нас сессию:Ло бота, который осуществляет спам в KillBot
  6. По логу визита - мы нашли номер визита бота = 728898112, сессия), и его слепок: 2490667000.

  7. Теперь мы знаем слепок бота и нам нужно настроить фильтрацию визитов по слепку в системе KillBot, чтобы визиты со слепком = 2490667000 считались ботами, а остальные - настоящими. В этом случае на конкретного бота мы сможем наложить ограничение.

  8. Создадим в системе KillBot новую группу ботов и назовем её, например: "смс бот".
     

    создание группы ботов вводим название группы ботов "смс бот"
  9. Теперь добавим визит с номером 728898112 и слепком 2490667000 в группу ботов. Как это делается можно посмотреть и в кейсе уменьшения роботности в метрике и в инструкции как использовать KillBot. Здесь мы сделаем немного по другому.

  10. Чтобы добавить визит в группу ботов нажимаем в левом меню на ссылку "добавить бота":
     

    добавляем бота в группу "смс бот"

     

  11. Переходим на страницу подтверждения. Здесь мы просто подтверждаем, и бот будет добавлен в группу "смс бот":подтверждение добавления бота в группу смс бот
  12. Далее переходим в настройки скрипта:
     заходим в настройки скрипта
  13. Настроим скрипт так, что бы все визиты с слепком = 2490667000 считались бы ботами. Для этого в группе ботов выберем группу, содержащую нашего единственного бота, и пометим что если слепок визита отсутствует в наших группах, то это пользователь:
     настраиваем скрипт на фильтрацию одного смс бота
    Все, скрипт настроен как нужно, теперь заход с единственным слепком будет расцениваться как бот. Далее реализуем защиту на стороне сайта.

Реализация защиты от смс бота со стороны сайта

1. Выбор способа защиты.
На стороне сайта можно реализовать один из двух вариантов защиты:

  • или заблокировать бота
  • или игнорировать его действия.

Остановились на втором варианте, так как если бот будет заблокирован, то злоумышленник может попытаться обойти защиту (купить и начать использовать другого бота, например). Поэтому было решено не мешать боту создавать запросы на отправку смс. При этом интерфейс сайта реагировал так же, НО сам смс запрос не отправлялся.

2. Реализация защиты.

У KIllBot есть две возможности информирования сайта о проверке визита на бота, это:

  • Сохранить результат проверки в куки (дырявый способ, но быстрый - без дополнительного запроса на сервер)
  • Запрашивать результат проверки на бота по АПИ через идентификатор сессии.

Программист со стороны клиента реализовал проверку по наличию куки, чтобы не делать дополнительного запроса на наш сервер.
Проверка реализована по типу:

if  (isset($_COOKIE['xfGHr'])&&$_COOKIE['xfGHr']==true){
//отправляем смс
}else{
//смс НЕ отправляем
}

Теги