Как защитить от спама формы обратной связи на сайте

Как защитить от спама формы обратной связи на сайте

Все мы сталкиваемся со спамом регулярно в том или ином виде. Если раньше «спам» ассоциировался с электронной почтой, то сейчас получить нежелательное сообщение можно где угодно, начиная с мессенджеров и заканчивая формами обратной связи на сайте, о которых мы и расскажем в этом кейсе, разработанным нашей командой поддержки.

Спам вреден не только потому, что он раздражает пользователей и засоряет их почтовые ящики или формы обратной связи. Спам может создать дополнительную нагрузку на сервер, замедлить работу сайта и повлиять на его производительность. Кроме того, некоторые виды спама могут содержать вредоносные ссылки или программы, создающие угрозы безопасности.

Формы обратной связи доступны для всех посетителей сайта, поэтому они часто становятся целью для спамеров, которые используют ботов, для массовой отправки сообщений через формы обратной связи. Это может привести к серьезному засорению почтового ящика и к распространению вредоносного программного обеспечения или фишинговым атакам. Поэтому разработка эффективных методов защиты от спама через формы обратной связи становится важным аспектом безопасности веб-сайта.

Исходные данные и методология исследования

Подопытным в нашем кейсе стал интернет-магазин работающий на CSM 1С-Битрикс. Посещаемость более 50000 уникальных пользователей в месяц. На сайте есть формы связи с полями: имя, телефон, e-mail и комментарий. Данные отправляются через собственный почтовый сервер.

Форма обратной связи на сайте дает пользователям возможность отправлять сообщения с вопросами, предложениями или комментариями, а также позволяет обратиться за помощью.

Форма заявки на сайте, через которую поступают спам-сообщения.
Форма заявки на сайте, через которую поступают спам-сообщения.

Далее мы опишем ряд мер, принятых для фильтрации и блокировки спам-сообщений, получаемых через формы обратной связи на сайте и приведем статистику после применения каждого способа защиты.

Для понимания эффективности каждого из методов необходимо отделить спам от реальных обращений, для чего ко всем формам обратной связи добавляем поля для логирования:

  • «Описание для анонса» — поле, в которое записывается ip-адрес, с которого заполнили форму
  • «Детальное описание» — поле, содержащее данные из формы обратной связи

Так можно понять, какие сообщения из формы обратной связи были заблокированы, а какие прошли все проверки и были получены. Полученные, в свою очередь, можно уже разделить на реальные и спам.

Такое разделение позволяет видеть:

  • Заблокированные сообщения, для оценки работы защитных механизмов
  • Сообщения, которые прошли все проверки и фильтры
  • Реальные сообщения, чтобы проверить, что они не блокируются
  • Спам-сообщения, которые пробили защиту
Пример логирования сообщений, на котором видны заблокированные спам-сообщения с причиной блокировки и прошедшие реальные сообщения на сайте.
Пример логирования сообщений, на котором видны заблокированные спам-сообщения с причиной блокировки и прошедшие реальные сообщения на сайте.

В нашем случае на сайте уже использовались некоторые методы, а именно: включен модуль «Проактивная защита» и установлена стандартная CAPTCHA от платформы.

Для получения исходных значений, собираем данные по количеству спама за первую неделю:

  • Сообщений от реальных пользователей — 44
  • Спам-сообщений — 60
  • Заблокированных сообщений — 0
Как защитить от спама формы обратной связи на сайте

Методы защиты от спама

Далее рассмотрим 6 методов борьбы со спамом. После применения статистика собиралась в течение недели.

1. Задержка перед повторным запросом для одинаковых IP-адресов

Устанавливаем фиксированное время ограничения (например, 90-120 секунд), или настраиваем постепенное увеличение времени между повторными запросами.

Мы установили тайм-аут в 120 секунд при отправке данных из формы с сохранением в session storage, а на сервере настроили проверку IP-адреса — для повторяющихся адресов применяется задержка отправки данных. Это помогает контролировать интервал между последовательными отправками, что ограничивает частоту отправки с одного IP.

Результат

Получили 122 сообщения через формы обратной связи, из которых:

  • 70 сообщений от реальных пользователей
  • 19 полученных спам-сообщений
  • 33 заблокированных спам-сообщения

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

Как защитить от спама формы обратной связи на сайте

2. Ограничение количества запросов с одного IP

Этот метод устанавливает лимит на количество запросов, которое может выполнить один IP-адрес за определенный промежуток времени (например, за минуту или час).Такой подход позволяет обеспечить нормальное взаимодействие с сайтом для обычных пользователей, но при этом снижает шансы злоумышленников массово запускать атаки. Для улучшения пользовательского опыта и предотвращения случайных блокировок, важно установить разумные ограничения и обеспечить информативные сообщения о превышении лимита. Мы установили лимит в 5 запросов с одного IP-адреса в сутки.

Результат

Получили 124 сообщения через формы обратной связи, из которых:

  • 66 сообщений от реальных пользователей
  • 12 полученных спам-сообщений
  • 46 заблокированных спам-сообщений

Введенное ограничение количества запросов с одного IP-адреса эффективно снижает вероятность спама и нежелательной активности, не вредя опыту реальных пользователей. На работоспособность ограничений указывает возросшее число заблокированных спам-сообщений.

Как защитить от спама формы обратной связи на сайте

3. Ограничение количества запросов на один телефонный номер

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

Помимо экономии ресурсов это также повышает безопасность и уровень аутентичности. Такие меры обеспечивают надежный способ подтверждения, минимизируя возможности мошенничества и снижая нагрузку на систему.

Еще одной полезной стратегией является запрет отправки запросов в страны, где отсутствуют зарегистрированные пользователи. Это уменьшает риск ненужных запросов и сокращает возможности для нежелательных активностей.

Кроме того, такое ограничение помогает бороться с ручным спамом. Даже если злоумышленник решит вводить запросы вручную, его возможности будут серьезно ограничены. Это значительно повышает порог входа для спамеров и делает их попытки менее эффективными и более затратными.

В нашем случае, учитывая отсутствие SMS-аутентификации при отправке данных из форм обратной связи, мы внедрили лимит на количество запросов с одного номера, ограничивая его до 5 запросов в течение суток.

Результат

Получили 125 сообщений через формы обратной связи, из которых:

  • 51 сообщение от реальных пользователей
  • 9 полученных спам-сообщений
  • 65 заблокированных спам-сообщений

Всегда важно находить баланс между безопасностью и удобством пользователей. Слишком строгие ограничения могут привести к недовольству легитимных пользователей, но с правильными настройками этот метод может быть очень эффективным средством защиты от спама.

Как защитить от спама формы обратной связи на сайте

4. Использование CSRF-токена

CSRF-токен (Cross-Site Request Forgery) — это уникальный код, который генерируется на сервере и передается на клиентскую сторону при загрузке формы обратной связи.

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

При каждой загрузке формы на сервере генерируется новый CSRF-токен, который затем вставляется в скрытое поле формы. При отправке формы на сервер, токен сравнивается с тем, который сервер ожидает получить. Если токены совпадают, запрос считается подлинным и данные обрабатываются. Если токены не совпадают, запрос может быть автоматически отклонен. Эта техника является стандартной практикой в веб-разработке и обеспечивает дополнительный слой безопасности для пользователей и данных, улучшая качество взаимодействия с вашим сайтом.

Так как сайт работает на CMS 1С-Битрикс с включенным модулем «проактивная защита», данный метод применяется по умолчанию, так как модуль уже содержит данное решение.

5. Использование Google reCAPTCHA v3

Google reCAPTCHA v3 представляет собой инновационную «невидимую» проверку, которая не требует от пользователей решения задач или ввода текста. Результат работы этого сервиса выражается числом в диапазоне от 0 до 1, указывающим на вероятность того, что перед нами действительно человек.

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

В нашем случае интеграция Google reCAPTCHA v3 в форму обратной связи оказалась эффективной для снижения нежелательного спама.

Результат

Получили 132 сообщения через формы обратной связи, из которых:

  • 56 сообщений от реальных пользователей
  • 0 спам-сообщений
  • 76 заблокированных спам-сообщения

Следует отметить, что этот метод использует browser fingerprinting (отпечаток браузера) — это означает, что мы наблюдаем ботнеты, способные постоянно показывать результат в 0.9. А значит, необходимо постоянно совершенствовать методы борьбы с подобными атаками.

Как защитить от спама формы обратной связи на сайте

6. Дополнительные и специализированные средства защиты

Примеры специализированных инструментов включают такие сервисы, как Cloudflare, Qrator и DDoS-Guard. Они не только защищают от DDoS-атак, но и предоставляют эффективные средства против ботов.

С помощью этих инструментов можно существенно снизить нагрузку от автоматизированных ботов, предотвратить спамные запросы и обеспечить легитимные взаимодействия с сайтом. Такие решения также могут быть эффективными в защите от различных видов атак, предоставляя гибкие настройки для анализа и фильтрации трафика.

Сервисы фильтрации трафика

Если ваш бизнес не активен в определенных регионах, у вас есть возможность ограничить доступ из этих мест или даже заблокировать возможность отправки на соответствующие номера. Также можно установить ограничения на доступ для широко известных ботов и инструментов разработки, анализируя данные из заголовков User-Agent и Referer.

В нашем случае, клиент принял решение не вносить подобные ограничения, поэтому рекомендация по этому вопросу не была реализована. Несмотря на это, важно оставаться внимательным к потенциальным рискам и постоянно оценивать необходимость дополнительных ограничений для поддержания безопасности и эффективности взаимодействия на сайте.

Итоги

В этом кейсе мы испытали различные методы борьбы с автоматическими атаками и нежелательными сообщениями, получив итоговые результаты:

Как защитить от спама формы обратной связи на сайте

Ни один метод не обеспечивает абсолютную защиту, но каждый из них снижает вероятность и масштабы угрозы. Сочетание различных методов, как в данном случае, позволяет обеспечить более надежную защиту, адаптированную к конкретным обстоятельствам. Комбинирование и дополнение методов повышает общий уровень защиты и снижает риски. Это подчеркивает важность применения многомерного подхода к защите, особенно в онлайн-среде, где угрозы постоянно эволюционируют.

22
1 комментарий

А бывает и наоборот)

Ответить