Як захистити форми на сайті від спаму: 7 перевірених методів
Форми на сайті відіграють важливу маркетингову роль. Вони допомагають отримати контакти лідів, стимулювати продажі та отримати зворотний звʼязок від клієнтів. Нерідко форми стають джерелом спаму, і потрібні листи просто губляться серед непотрібних повідомлень.
У нас на шаред-хостингу діє обмеження – 1 ГБ на поштову скриньку. Коли цей ліміт вичерпується, нові листи просто не доставляються. А от на VPS та дедіках можна самому встановлювати обмеження на поштову скриньку, але все залежатиме від загального дискового простору послуги. Тому про захист пошти від спаму потрібно подбати завчасно.
Крім того, що спам засмічує поштову скриньку й вам доводиться витрачати час на її очищення, він спричиняє й інші проблеми:
- листи можуть містити фішингові посилання, які є шлюзом для розповсюдження шкідливих файлів, скриптів тощо;
- доки справжні клієнти чекають на відповідь, їхня зацікавленість знижується;
- спамер може імітувати клієнтські запити, тому потрібно видаляти фейкові записи з бази.
Далі розглянемо 7 ефективних методів, які допоможуть захистити форми від спамерів.
До речі, ми ще маємо інструкцію зі створення форм на сайті. Поєднайте її з цими порадами й ваші форми будуть не лише захищеними, а й зручними для користувачів.
Типові методи шахрайства через форми
Спамери вдаються до різноманітних шахрайських схем. Про них варто знати, щоб випадково не попастися на гачок.
Класичне засмічення скриньки
Це найпростіший варіант спаму, коли на форму масово надходять запити. У результаті папка «Вхідні» тоне в непотрібних листах, а справді цінні запити просто губляться. Це особливо шкідливо, коли форма – єдине джерело комунікації, і всі запити зберігаються в одному місці.
Обхід фільтрів пошти
Поштові сервіси використовують спеціальні спам-фільтри, через які проходять листи. Наприклад, перевірка SPF, DKIM і DMARC-записів та виявлення посилань на шкідливі сайти. Форма – це обхідний шлях для спамера: якщо вона погано захищена, її можуть легко використати для спам-розсилок чи фішингових атак. До того ж через форму з сайту, запити потрапляють безпосередньо на корпоративну пошту.
Пропонуємо докладну інструкцію зі створення корпоративної пошти на своєму хостингу.
Реклама та оптимізація зовнішнього SEO
Зазвичай форма має додаткове поле для коментаря. Спамери залишають там свої посилання, щоб просунути сайт або отримати зворотні посилання для SEO і прорекламувати товар/послугу.
Але такий метод просування давно не працює, адже пошуковики навчились із цим боротися. Якщо посилання має атрибут rel="nofollow" чи rel="ugc", воно не впливає на ранжування. Але оскільки ці атрибути має додавати сам сайт, спамери розраховують на те, що захист буде відсутній або реалізований неправильно, їхня схема вистрелить і посилання таки проіндексується.
Фішингові посилання
У форму можуть додавати посилання не лише на сайти спамерів, а й на шкідливі ресурси, наприклад:
- підроблена сторінка відомої компанії, наприклад, фальшивий інтерфейс входу;
- сайт, який заражає комп’ютер шкідливим ПЗ;
- сторінка з рекламою незаконних товарів чи послуг.
Шахраї додають такі посилання й намагаються змусити власника сайту або менеджера, який читає заявку, клікнути на нього. А далі він реєструється на підробленому сайті, спамер отримує його персональні дані й використовує у шахрайських цілях.
Пошук вразливостей
У форму також можуть вставляти рядки шкідливого коду. У такому випадку мета шахраїв не реклама, а пошук способу зламати сайт. Найпопулярніші приклади:
- SQL-інʼєкції – зловмисник вводить у форму спеціально сформований фрагмент SQL-коду. Сервер, не обробивши його належно, вставляє цей код у запит до бази даних. У результаті спамер може отримати доступ до таблиць із персональними та платіжними даними клієнтів, логінами, паролями, а в окремих випадках може навіть змінювати або видаляти ці дані.
- XSS-інʼєкції – у форму вставляють JS-код, який виконується у браузері користувача. Завдяки цьому спамер викрадає кукі й логіниться в адмінці. Наслідки різні: підміна контенту, перенаправлення на фішингові сайти, виконання дій від імені користувача (якщо сесія активна) тощо.
Атака на ресурси сайту
Це та сама DoS-атака тільки через форми. Зловмисник надсилає велику кількість запитів і намагається перевантажити сервер. Це особливо небезпечно, якщо форма виконує складні операції: надсилає листи, генерує PDF чи додає дані в CRM. Все тому, що кожен такий запит навантажує процесор, памʼять та зовнішні сервіси. А якщо атака здійснюється з багатьох джерел одночасно (це вже буде DDoS), сервер сповільниться або й зовсім впаде.
Детальніше про DDoS-атаки за цим посиланням.
До речі про CRM. Якщо форма автоматично додає отримані дані туди, спам-запити можуть її суттєво засмітити й доведеться витратити багато часу на видалення неправдивих даних. Крім того, через фейкові контакти починають ламатися всі алгоритми аналітики та розсилок, бо тоді листи йдуть на незареєстровані адреси й ефективність розсилки знижується. Своєю чергою, це може вплинути на репутацію поштового домену.
Якщо ваш домен усе ж потрапив до спам-списку, у нашій попередній статті є план дій і на цей випадок. Залишаємо посилання.
Фільтрація корпоративної пошти
Запити з форм, як і будь-які інші листи, можуть містити спам. Якщо поштовий сервер не має зовнішнього захисту, такі листи потрапляють прямо у скриньку. Але є спеціальні антиспам-сервіси які їх фільтрують. Ми в Хостпро пропонуємо послугу захисту від спаму для одного домену. Сервіс захищає усі поштові скриньки домену.
Як це працює? Коли надходить лист, фільтр MailChannels перевіряє його на спам. Аналізується вміст, репутація відправника, поштові DNS-записи й поведінкові фактори. Якщо система визначає, що лист схожий на спам, він відправляється в карантин, а власник домену отримує сповіщення про це. Якщо треба, лист можна переглянути й розблокувати в розділі «Manage Quarantine».
Плагін Contact Form 7 також захищений цим сервісом. Якщо форми на сайті створені ним, шкідливі листи не дійдуть до скриньки, а будуть одразу виявлені й заблоковані.
Щоб фільтр почав працювати, потрібно змінити MX-записи. Тобто, замість стандартного поштового сервісу (наприклад, mail.example.ua) потрібно вказати MX-сервери MailChannels (їх ми вам надамо). Трафік пошти буде перенаправлений через антиспам-сервіс. Зробити це можна кількома способами, розгляньмо покроково:
Редагування MX у панелі керування DirectAdmin
На головній сторінці панелі перейдіть у розділ «Керування DNS».

У переліку записів знайдіть MX і натисніть на значок редагування.

Присвойте запису назву, змініть поштовий сервер і введіть значення (що більше, то пріоритетнішим буде сервер). Після заповнення всіх полів натисніть «Зберегти».

Редагування MX у панелі керування cPanel
На головній сторінці знайдіть розділ «Домени» й перейдіть у «Редактор зони».

Натисніть «Керувати».

Перейдіть на вкладку MX-записів. Якщо тут вже щось є, натисніть «Редагувати», якщо ні – «Додати запис».

Введіть доменне імʼя, поштовий сервер і визначте пріоритет. Як закінчите, натисніть «Зберегти запис».

Редагування MX в Особистому кабінеті хостингу
З головної сторінки hostpro.ua перейдіть до Особистого кабінету й натисніть на вкладку «Домени».

Знайдіть потрібний активний домен, натисніть на три крапки й перейдіть до «Керування DNS».

Зʼявиться вікно керування DNS-записами, перемкніться на вкладку MX.

Натисніть значок редагування.

Заповніть необхідні поля й натисніть «Прийняти зміни».

Якщо якийсь крок здається незрозумілим – зверніться до нашої техпідтримки. Вона допоможе відредагувати MX-запис будь-яким зручним способом.
Як запобігти спаму в формах
На щастя, існує чимало методів боротьби зі спамом у формах. Кожен спосіб ефективний по-своєму, але найкраще вони працюють у комплексі.
Капча
Капча (CAPTCHA) – це технологія, яка дозволяє визначити, що запит надійшов від людини, а не від бота. Це найпростіший і водночас найпоширеніший метод захисту. Капча може бути різною, наприклад, у вигляді клаптиків фотографії велосипеда, які потрібно скласти докупи. З таким завданням упорається навіть дитина, а от роботу це не під силу. Хоча трапляються й винятки…
Водночас капча не повинна бути заскладною й вимагати багато часу на вирішення. Наприклад, не варто додавати приклади з піднесенням числа до пʼятого степеня, адже це негативно вплине на користувацький досвід і знизить конверсію.
Популярним рішенням є reCAPTCHA від Google. Щоб додати її на сайт потрібно мати гугл-акаунт і виконати кілька кроків:
- перейдіть на сайт reCAPTCHA;
- натисніть «Get started»;
- введіть домен сайту й виберіть тип капчі (v2 чи v3);
- натисніть «Відправити».
На екрані зʼявляться два ключі: приватний і публічний. Публічний потрібно додати в HTML-код сайту, а приватний використовується для звʼязки сервера із сервісом reCAPTCHA.
Якщо ваш сайт на WorPress, ключі можна додати прямо в адмінку. Для цього з головної сторінки адмінпанелі перейдіть у меню «Звʼязок» → «Інтеграція» й натисніть «Налаштування інтеграції» в полі reCAPTCHA. Далі введіть ключі у відповідні поля й натисніть «Зберегти зміни». На цьому все, тепер ваші форми захищені.

Є ще одна популярна система – hCaptcha. Принцип її роботи подібний до гуглівської, але є кілька відмінностей:
- не збирає дані користувачів;
- платить компаніям за розвʼязання капчі користувачами;
- містить тести із розпізнаванням зображень, які складніші ніж у рекапчі.
Цікаво, що деякі боти з легкістю обходять reCAPTCHA завдяки функції озвучування зашифрованого тексту. Вони використовують API Google для перетворення аудіо на текст, щоб заповнити капчу. hCaptcha не має такої функції, тому вона може вважатись надійнішою.
Антиспам плагіни
Хоч такі плагіни не призначені безпосередньо для форм, вони все одно захищають їх, адже працюють комплексно. Якщо капча перевіряє користувача на етапі заповнення ним форми, то плагін аналізує вже надіслані дані й визначає, чи є вони спамом. Принцип роботи подібний до антиспам-сервісів, плагін також перевіряє:
- IP-адресу;
- поведінку відправника;
- частоту повідомлень;
- наявність типових спамних фразочок («лише сьогодні», «ваш акаунт заблоковано»);
- збіг з глобальними чорними списками адрес і ботів.
На відміну від капчі, плагіни невидимі для користувачів, адже працюють у фоновому режимі. Вони можуть бути платними й безплатними, а додати їх можна в адмінці WP. Для цього слідуйте за ланцюжком «Головна» → «Плагіни» → «Додати новий». В рядку пошуку введіть потрібний плагін (наприклад, Akismet, Antispam Bee, CleanTalk) й натисніть Enter. Залишається натиснути «Встановити» й налаштувати його роботу.

Приховані поля (honeypot)
Цей метод передбачає додавання у форму прихованих полів, які не видно на сайті. Фішка в тому, що їх заповнюють лише боти, адже вони невидимі для справжніх користувачів. Все тому, що бот зчитує HTML-код напряму, а не візуально, тому бачить усі елементи форми й сприймає приховані поля за звичайні. Назва honeypot говорить сама за себе – боти злітаються на такі пастки, мов бджоли на мед.
Ось приклад реалізації таких полів у HTML:
<form action="/submit" method="post">
<!-- Видиме поле: Ім’я -->
<label for="name">Імʼя:</label>
<input type="text" id="name" name="name" required>
<!-- Видиме поле: Email -->
<label for="email">Email:</label>
<input type="email" id="email" name="email" required>
<!-- Honeypot-поле -->
<div style="position: absolute; left: -9999px;" aria-hidden="true" tabindex="-1">
<label for="contact_code">Код підтвердження:</label>
<input type="text" id="contact_code" name="contact_code" autocomplete="off">
</div>
<!-- Кнопка відправки -->
<button type="submit">Відправити</button>
</form>Наша порада: не використовуйте ніде в коді слово honeypot. Деякі боти навчились це фільтрувати й спеціально не заповнюють поля, які позначені медовими горщиками.
У результаті, якщо вам надходить запит із заповненим прихованим полем, можна навіть не розглядати його, адже це на 99,9% бот. Зазвичай такі запити навіть не доходять до скриньки, адже спрацьовує серверна валідація, яка відхиляє або одразу відправляє такі листи в спам. Приклад такої перевірки на PHP:
<?php
if ($_SERVER['REQUEST_METHOD'] === 'POST') {
// Якщо приховане поле заповнене – це бот
if (!empty($_POST['contact_code'])) {
http_response_code(403);
exit('Access denied – bot suspected.');
}
// Далі обробка справжніх даних
$name = trim($_POST['name']);
$email = trim($_POST['email']);
// ...
}
?>Варто памʼятати, що цей метод не дає повного захисту від спаму, адже існують розумні боти, які розпізнають й уникають таких пасток. Однак для боротьби зі звичайними й простими ботами honeypot працює досить ефективно.
Блокування форми після першого заповнення
Можна зробити так, щоб користувач міг заповнювати форму лише один раз за сеанс. Це не вбереже вас від спамерів чи ботів, але принаймні зробить неможливою масову розсилку. Зробити це можна кількома способами:
Через сесію
Після першого надсилання сервер записує у сесію прапорець (наприклад, form_submitted = true). Якщо користувач повторно відправляє форму в тій самій сесії, зʼявляється повідомлення «Ви вже заповнили форму».
<?php
session_start();
if(isset($_SESSION['form_submitted'])) {
echo "Ви вже заповнили форму.";
} else {
if($_SERVER['REQUEST_METHOD'] === 'POST') {
// обробка форми
$_SESSION['form_submitted'] = true;
echo "Дякуємо за заповнення!";
}
}
?>Переваги: досить просто реалізувати.
Недоліки: захист не спрацює, якщо спамер перевідкриє сайт або перейде на інший браузер/пристрій.
Через cookie
Коли користувач заповнює форму, на його компʼютер ставляться куки – невеликі файли, в яких зберігаються попередні дії на сайтах. Якщо спробувати надіслати повторний запит, JavaScript перевірить куки й заблокує форму. У коді це має ось такий вигляд:
if (document.cookie.includes("form_submitted=true")) {
document.getElementById("myForm").style.display = "none";
alert("Ви вже заповнили форму.");
}
document.getElementById("myForm").addEventListener("submit", function() {
document.cookie = "form_submitted=true; path=/; max-age=86400"; // 1 день
});Переваги: працює навіть після перезавантаження сторінки.
Недоліки: щоб обійти блок, можна просто перейти на інший браузер/пристрій або видалити куки.
Детальніше про куки в нашій попередній статті.
Через IP-адресу або акаунт користувача
На сервері зберігаються IP або ID користувачів, які вже заповнили форму. Якщо надходить запит від уже збереженого IP/ID – сервер не приймає форму вдруге й повертає відповідне повідомлення.
Переваги: точніше, ніж сесії та куки.
Недоліки: неточний, бо зловмисник може змінити IP.
Варто зауважити, що більшість сучасних ботів не привʼязана до сесій, куків чи IP-адрес. Та навіть якщо IP використовується – у кожного бота вона унікальна, тому ці методи можуть бути лише додатковими, а не основними.
Вимкнення автоматичних відповідей
Часто власники сайтів створюють шаблон листа, який надсилається автоматично після заповнення форми. Це зручно, адже економить час і пришвидшує обробку заявок. Але уявіть ситуацію: на форму надходить тисяча заявок на хвилину, і кожна з них запускає відправку email. Це створює велике навантаження на сервер і поштову систему, може перевищити SMTP-ліміти й навіть призвести до тимчасового блокування домену.
Цей підхід не є прямим методом боротьби зі спамом, але він допомагає мінімізувати втрати під час атак. Замість автоматичних листів можна просто показувати повідомлення: «Дякуємо, вашу заявку прийнято».
Cloudflare
Cloudflare – це CDN (мережа доставки контенту), яка захищає сайт від хакерських атак і покращує його продуктивність. Вона не призначена безпосередньо для захисту форм, але з нею на сайт потрапляє менше шкідливого трафіку. Основні функції:
- Захист від DDoS – IP вашого сервера приховується, і під час атаки весь трафік проходить через сервери Cloudflare. Сайт працює у штатному режимі, а навантаження на хостинг мінімальне як у звичайний час, так і під час атаки.
- Фаєрвол – фільтр вхідного трафіку, який блокує різні інʼєкції, DDoS, брутфорс і трафік від ботів. Дозволяє налаштовувати власні фільтри, наприклад, блок певних IP-адрес.
- Базовий захист від ботів – система аналізує поведінку відвідувачів, порівнює її зі своїми знаннями про ботів і блокує підозрілі запити у разі збігів.
Ви можете отримати цей захист безплатно, адже ми є офіційним партнером компанії Cloudflare. Для цього необовʼязково мати ще якусь нашу послугу, але якщо ви хостите у нас свій сайт, буде зручно керувати всіма функціями в одному кабінеті.
А в нас ще й інструкція є з підключення Cloudflare до свого сайту.
Використання більшої кількості полів
Користувачі Reddit часто радять додавати більше полів у форму. Особливо ефективні поля, які відрізняються від текстових, наприклад, випадні списки. Якщо зробити таке поле обов’язковим, бот не зможе відправити форму без його заповнення.
Чому це працює?
- Деякі боти розраховані на простенькі форми з кількома полями: імʼя, номер телефону, місто. Якщо додати поля «посада», «email» та «коментар», боту буде складніше обробити форму.
- Можна додати перевірку коректності даних, адже велика кількість полів змушує бота вигадувати інформацію. Наприклад, номер телефону має бути числовим, а email повинен мати формат [email protected].
- Деякі спамери працюють за принципом: більше полів = більше грошей на заповнення. Все тому, що довші форми вимагають більше ресурсів: додаткових операцій, перевірок капч, імітації поведінки, проксі тощо. Тобто атакувати такі форми менш вигідно.
Проте є одне волохате але. Якщо додати забагато полів, користувачі можуть відмовитися заповнювати форму. Сьогодні люди перевантажені багатоканальним маркетингом, тому якщо процес покупки займає надто багато часу, вони можуть легко перейти до конкурентів.
Це не означає, що метод додавання полів потрібно відкинути. Пробуйте віднайти баланс між захистом і зручністю. Додавайте ті поля, які справді потрібні для ідентифікації лідів, наприклад, місце проживання, посада, вік тощо.
Підсумуємо
Сучасні боти стають дедалі розумнішими: вони вміють імітувати поведінку справжніх відвідувачів, і їх стає все важче виявити. Тому до захисту форм потрібно підходити комплексно й забезпечувати багаторівневу перевірку.
Наостанок залишаємо ще одну корисну статтю: як виявити шкідливий трафік ботів на сайті й заблокувати його.
Сподіваємось, наша стаття була корисною й ви нарешті позбудетесь нескінченного потоку фейкових даних зі своїх форм.
Можливо, вас зацікавить
Коли бізнес виходить на міжнародний ринок, розширюється його клієнтська база, зростають продажі та підвищується...
Щоб електронна комерція була успішною, бізнесу необхідно мати власний інтернет-магазин із вдалим доменом та...
Зазвичай розробка повноцінного сайту – доволі клопітний процес, який вимагає значних фінансових вкладень, часу,...
Наш телеграм
з важливими анонсами, розіграшами й мемами
Приєднатися