Защита формы на сайте от спама, а бюджета на СМС-рассылки - от скликивания
- CAPTCHA
- 2.Без CAPTCHA
- 2.1.Временные ограничения на заполнение формы
- 2.2.Запрет (или задержка) на повторное заполнение формы
- 2.3.Ограничение количества запросов с одного IP-адреса
- 2.4.Ограничение количества запросов на один номер
- 2.5.Блокировка нежелательного трафика
- 2.6.Использование сервисов фильтрации трафика
- 2.7.Исключение автоматической регистрации аккаунтов
- 2.8.Модерация созданных аккаунтов
- 2.9.Защита от спам-ботов с помощью скрытого поля
- 2.10.Вход на сайт по одноразовому коду из СМС
- 2.11.Прочие методы
- 3.Заключение
Клиенты, использующие СМС для регистрации и/или авторизации в личном кабинете или на сайте, часто сталкиваются со следующей проблемой скликивания баланса и спама. В этой статье приведем рекомендации по защите от спама.
Практически любой сайт, имеющий форму регистрации или обратной связи, может подвергнуться атакам злоумышленников или спамеров. Различные формы обратной связи - это очень уязвимое место любого сайта, которое позволяет:
- Оставлять в комментариях вредоносные ссылки
- Регистрировать фальшивые аккаунты
- Захламлять базу данных мусорными контактами
- Ломать аналитику сайта
- Скликивать (увеличивать расход) бюджет на СМС-рассылки
- Подставлять владельца сайта под санкции операторов связи или ФАС за отправку СМС-спама
- Замедлять время работы сайта в целом и отдельных страниц в частности и т.п.
Инициаторами подобных атак могут быть недобросовестные конкуренты, хакеры или мошенники, которые стремяться заработать на Ваших уязвимостях. Чтобы не стать жертвой злоумышленников, нужно защищать сайт от подобных операций. Ниже рассмотрим целый ряд способов, как это сделать.
1.CAPTCHA
Основным инструментом защиты формы регистрации или обратной связи является captcha. Этот инструмент позволяет определить, кем является пользователь, отправляющий на сервер заполненную форму обратной связи (или любое другое сообщение), - живым человеком или искусственным интеллектом. В основу проверки заложен следующий принцип: люди и спам-боты выполняют различные задания по-разному, например, живой человек успешно выберет из представленной подборки изображений картинки с автомобилем, пожарным гидрантом или пешеходным переходом, тогда как искусственный интеллект этого сделать не сможет и, соответственно, проверка будет не пройдена. То же самое касается и других задач, например, решения математических задач, паззлов, составления слов и выражений. Другими словами, каждый тест составлен именно таким образом, чтобы живой человек и спам-программа справлялись с ним с разным успехом. Живой пользователь должен без труда решить задачу в отличие от искусственного интеллекта.
Именно этот принцип заложен в основу теста Тьюринга, который стандартно интерпретируется следующим образом: «Человек взаимодействует с одним компьютером и одним человеком. На основании ответов на вопросы он должен определить, с кем он разговаривает: с человеком или компьютерной программой. Задача компьютерной программы - ввести человека в заблуждение, заставив сделать неверный выбор» (источник).
Установка captcha - самый простой и весьма эффективный (но далеко не единственный) способ защиты от спама. Ее легко внедрить, и она не требует от посетителей Вашего сайта значительных усилий для ее прохождения. Этот инструмент является подходящим вариантом для небольших сайтов, для которых более сложные методы верификации пользователей будут неоправданно сложными и дорогими. Можно создать капчу самостоятельно или воспользоваться готовыми решениями от известных сервисов, например поисковых систем и CMS. При этом важно не забывать об удобстве реальных пользователей: тесты, отнимающие много времени, могут вызвать раздражение и отказ от взаимодействия с Вашим сайтом.
1.1.reCAPTCHA
Это бесплатный сервис, который защищает сайт от спама, используя передовые методы анализа, чтобы отличить людей от ботов. С 2009 года reCAPTCHA принадлежит компании Google. На текущий момент существует две популярные версии этой капчи — v2 и v3.
1.1.1.reCAPTCHA v2
- Проверяет запросы с помощью заданий.
- Пример: при отправке формы попросит пользователя поставить флажок возле надписи «Я не робот».
- Особенности: некоторые задания могут оказаться слишком сложными и негативно отразиться на конверсии сайта.
1.1.2.reCAPTCHA v3
- Выполняет проверку с учетом оценок пользователя на веб-сайте.
- Пример: фактически проверка является невидимой для обычных пользователей, а на сайте будет висеть логотип, что сайт защищен от спама с помощью reCAPTCHA.
- Особенности: Google скрывает принципы работы алгоритмов, связанных с reCAPTCHA v3, поэтому сложно сказать, насколько точно будет поставлена оценка в определенных моментах.
Является “скрытой” формой проверки, не требующей со стороны пользователя решения задач или ввода текста. В результате работы сервис возвращает значение в диапазоне от 0 до 1, означающее вероятность того, что пользователь — человек. На практике, значения от 0,3 могут присваиваться легитимным пользователям, потому для полноценной фильтрации могут быть использованы лишь значения <0,3. В остальных случаях необходима комбинация с другими методами, возможность пользователю подтвердить, что он не робот другим способом. Помимо этого, поскольку метод использует browser fingerprinting — наблюдаются ботнеты, способные стабильно показывать результат в 0,9.
1.2.hCaptcha
Еще один сервис по борьбе со спамом — hCaptcha. К преимуществам hCaptcha относят то, что у сервиса есть бесплатная подписка, а также он собирает минимум необходимой информации о пользователях. Это отличная альтернатива reCAPTCHA.
1.3.CAPTCHA от популярных CMS-систем
Самый простой способ установить captcha, если Ваш сайт работает на CMS - с помощью плагинов. Эту возможность предлагает и WordPress, и Joomla, и многие другие CMS-системы.
2.Без CAPTCHA
2.1.Временные ограничения на заполнение формы
Живые люди и боты по-разному "ведут себя" при заполнении форм обратной связи. Так, людям нужно гораздо больше времени для ввода данных, чем "машине", которой не нужно ничего печатать. Эту разницу в подходах можно и нужно использовать в качестве основы для защитного механизма, суть которого заключается в установлении временных ограничений на заполнение полей формы. Пример: если посетитель вписал информацию быстрее, чем прописано в условии, то он будет считаться ботом и его аккаунт или сообщений не будет принято автоматически.
Разумеется, у этого метода есть минусы:
- Каждый браузер имеет функцию автоматического заполнения постоянно повторяющихся полей (ФИО, телефон, электронный адрес, физический адрес, город и т.п.)
- Немалое число ботов научились проходить эту процедуру с той же скоростью, что и люди, поэтому защищать сайт только с помощью такого сценария неэффективно, но он может хорошо работать в связке с другими методами.
2.2.Запрет (или задержка) на повторное заполнение формы
Злоумышленнику выгодно осуществить максимальное количество запросов за минимально возможное время с одного устройства. Повторный запрос кода подтверждения с одного и того же IP-адреса или на один номер можно запретить вообще или разрешить не ранее, чем через несколько секунд или минут (например, 3 минуты). Как вариант, можно увеличивать это время с каждым следующим запросом (например, 2 минуты, 5 минут, 30 минут, сутки и т.п.). Стоит отметить также, что проверку имеет смысл осуществлять не только в интерфейсе браузера, но и на стороне сервера.
2.3.Ограничение количества запросов с одного IP-адреса
IPv4 адреса в мире закончились, а их аренда стоит денег, что увеличивает стоимость ресурсов атакующего. Адреса IPv6 же практически бесплатны и безграничны, потому поддержку IPv6 можно вовсе отключить. Пример: ограничить тремя запросами с одного IP-адреса в сутки.
2.4.Ограничение количества запросов на один номер
В целях сохранения бюджета на СМС-рассылки и минимизации рисков получения санкций от операторов связи и ФАС имеет смысл ограничить максимальное количество отправляемых СМС одному абоненту (на один номер). Например, 3-5 отправок на один номер в сутки - вполне разумное ограничение.
2.5.Блокировка нежелательного трафика
Вы можете ограничить отправку СМС-сообщений на те направления или страны, где Вы не ведете свой бизнес. Наш сервис позволяет заблокировать отправку в те страны, куда Вы не хотите отправлять, оставив лишь те направления, куда Вы хотите отправлять СМС. Например, Вы можете рассылать СМС только по России, закрыв весь остальной мир. Также Вы можете блокировать отправку сообщений на отдельные номера. Это могут быть номера тех абонентов, кто просил Вас перестать отправлять СМС. Еще можно ограничить доступ для известных ботов и инструментов разработки на основе заголовков User-Agent и Referer.
2.6.Использование сервисов фильтрации трафика
Такие сервисы, как Cloudflare, Qrator, DDoS-Guard предлагают не только решения по защите от DDoS, но и от ботов.
2.7.Исключение автоматической регистрации аккаунтов
Спам-аккаунты засоряют базу данных сайта и повышают успех публикации мусорного контента, когда для этого необходима авторизация на веб-ресурсе. Основными способами ограничить появление мусорных аккаунтов, созданных с помощью автоматического скрипта являются следующие:
- CAPTCHA
- Обязательное подтверждение указанных адреса электронной почты и номера телефона
- Блокировка email-адресов, находящихся на небезопасных доменах.
2.8.Модерация созданных аккаунтов
Проверка созданных аккаунтов перед передачей их в работу/публикацией позволяет вручную отсеять очевидно мусорные записи. Важно отметить, что при модерации совершенно не обязательно проверять каждое поле, достаточно отсеивать очевидно некорректные аккаунты, в которых, скажем, указаны некорректные контактные данные. Например, в своей работе мы вручную отклоняем регистрации, в которых вместо ФИО, email или номера телефона написана абракадабра.
2.9.Защита от спам-ботов с помощью скрытого поля
Hidden-поля — скрытые в коде сайта поля, которые пользователь не может заполнить по причине их невидимости на веб-странице. Зато эта задача по силам спам-ботам, сканирующим код сайта. В код добавляется условие о появлении ошибки в том случае, если при отправке формы было заполнено невидимое поле. Сообщение отклоняется и спам-программа блокируется.
2.10.Вход на сайт по одноразовому коду из СМС
Преимущества этого метода защиты:
- Устранение дублей: устранение дублирующихся регистраций или аккаунтов (один номер телефона = один аккаунт)
- Безопасность транзакций: подтвердждение транзакций одноразовым СМС-паролем повышает надежность операций
- Верификация абонента: введенный телефон существует, работает и принадлежит пользователю, а не роботу
- Защита от спам-атак: двухфакторная аутентификация предотвращает спам-атаки
- Повышение валидности результатов: подтверждение участников интернет-голосований повышает надежность полученных результатов
- Соблюдение законодательства: доступ к сетям общего пользования должен осуществляться после идентификации пользователя
- Заключение договоров по СМС: идентификация сторон договора и принятие условий договора при помощи СМС
Разумеется, не можем не отметить, что весьма серьезным недостатком этого метода является платность отправки СМС.
2.11.Прочие методы
В завершение просто перечислим еще ряд методов защиты: использование CSRF-токена, блокировка user-agent, cookies для проверки уникальности посетителя, фильтрация входящих данных и т.п.
3.Заключение
Технологий защиты сайта от злоумышленников огромное количество. Важно понимать, что ни один из описанных методов не гарантирует абсолютной защиты, поэтому методы должны применяться в комбинации. Например, в своей работы мы применяем сразу несколько методов:
- Не даем регистрировать аккаунты, если введенные пользователем электронный адрес или телефон уже фигурируют в нашей базе данных
- Подтверждаем телефоны и электронные адреса
- Вручную модерируем все регистрации и отклоняем аккаунты, в которых вместо ФИО, email или телефона указана абракадабра