Антиспам для форм 1С-Бітрікс: honeypot, таймінг, rate limiter

Багаторівневий захист форм Бітрікс: як ми знизили спам на 95% Ми зіткнулися з проектом, де 95% заявок були спамом: CRM забивалася сміттєвими лідами, email-черги перевантажувалися, аналітика спотворювалася. Щомісячні втрати на ручній модерації сягали сотень тисяч гривень. Після впровадження нашого
Послуги, які ми пропонуємо
Показано 1 з 1Усі 1626 послуг
Антиспам для форм 1С-Бітрікс: honeypot, таймінг, rate limiter
Простий
~1 день

Наші компетенції:

Часті запитання

Останні роботи

  • image_website-b2b-advance_0.webp
    Розробка сайту компанії B2B ADVANCE
    1454
  • image_bitrix-bitrix-24-1c_fixper_448_0.webp
    Розробка веб-сайту для компанії ФІКСПЕР
    1017
  • image_bitrix-bitrix-24-1c_development_of_an_online_appointment_booking_widget_for_a_medical_center_594_0.webp
    Розробка на базі Бітрікс, Бітрікс24, 1С для компанії Development of an Online
    759
  • image_bitrix-bitrix-24-1c_mirsanbel_458_0.webp
    Розробка на базі 1С Підприємство для компанії МИРСАНБЕЛ
    879
  • image_crm_dolbimby_434_0.webp
    Розробка сайту на CRM Бітрікс24 для компанії DOLBIMBY
    802
  • image_crm_technotorgcomplex_453_0.webp
    Розробка на базі Бітрікс24 для компанії ТЕХНОТОРГКОМПЛЕКС
    1161

Багаторівневий захист форм Бітрікс: як ми знизили спам на 95%

Ми зіткнулися з проектом, де 95% заявок були спамом: CRM забивалася сміттєвими лідами, email-черги перевантажувалися, аналітика спотворювалася. Щомісячні втрати на ручній модерації сягали сотень тисяч гривень. Після впровадження нашого захисту навантаження на сервер знизилося втричі, а витрати на модерацію скоротилися до 90%. На іншому проекті з 5000 формами на день клієнт заощадив значні кошти за рахунок автоматизації фільтрації. Стандартна CAPTCHA від Бітрікс (bitrix:main.captcha) — зображення з символами — практично не працює: сучасні боти розпізнають її з точністю 95%+. Потрібен багаторівневий підхід, який не вимагає від користувача зайвих дій і не ламає UX.

Чому одного методу недостатньо?

Кожен метод захисту має слабкі місця. Honeypot зупиняє простих ботів, але розумні обходять приховані поля. Таймінг блокує миттєві відправлення, але деякі боти затримуються. Rate limiter ефективний проти масових атак, але не захищає від розподілених. Комбінуючи їх, ми перекриваємо всі вектори.

Наприклад, honeypot відсіває 80% ботів, але решта 20% — це розумні боти, які обходять приховані поля. Таймінг ловить ще 50% з них, але деякі боти емулюють затримку. Rate limiter завершує картину, блокуючи повторні атаки з одного джерела. Така комбінація дає сукупну ефективність 95%+.

Які методи захищають від спаму?

Honeypot: приховане поле для ботів

Додаємо у форму приховане поле, яке боти заповнюють, а люди — ні. Сервер перевіряє: якщо поле не пусте — тихо ігноруємо запит.

<div style="position:absolute;left:-9999px;top:-9999px;opacity:0;height:0;overflow:hidden"> <label for="email_confirm">Leave empty</label> <input type="text" id="email_confirm" name="email_confirm" tabindex="-1" autocomplete="off" value=""> </div> // Серверная проверка if (!empty($data['email_confirm'])) { echo json_encode(['success' => true]); exit; } 

Таймінг: захист від швидких відправлень

При рендері записуємо timestamp у приховане поле. На сервері перевіряємо: якщо минуло менше 3 секунд — бот (тихий успіх). Якщо більше години — сесія закінчилася.

$formToken = base64_encode(json_encode([ 'ts' => time(), 'sessid' => bitrix_sessid(), ])); // в шаблоне: <input type="hidden" name="form_token" value="<?= htmlspecialchars($formToken) ?>"> // Проверка $token = json_decode(base64_decode($data['form_token'] ?? ''), true); $timeElapsed = time() - (int)($token['ts'] ?? 0); if ($timeElapsed < 3) { $this->markSpam('timing', $timeElapsed); exit(json_encode(['success' => true])); } if ($timeElapsed > 3600) { exit(json_encode(['success' => false, 'error' => 'Сессия истекла. Обновите страницу.'])); } 

Rate limiter: обмеження частоти запитів

Розгорнутий приклад класу RateLimiter

Обмежуємо кількість заявок з одного IP, email або телефону за період. Використовуємо кеш Бітрікс або Redis.

class RateLimiter { private const LIMITS = [ 'ip' => ['max' => 5, 'window' => 3600], 'email' => ['max' => 3, 'window' => 86400], 'phone' => ['max' => 2, 'window' => 86400], ]; public function check(string $type, string $identifier): bool { $limit = self::LIMITS[$type] ?? ['max' => 3, 'window' => 3600]; $key = 'spam_rl_'.$type.'_'.md5($identifier); $cache = \Bitrix\Main\Application::getInstance()->getManagedCache(); $count = (int)$cache->get($key); if ($count >= $limit['max']) { \CEventLog::Add([ 'SEVERITY' => 'WARNING', 'AUDIT_TYPE_ID' => 'SPAM_BLOCKED', 'MODULE_ID' => 'local.antispam', 'DESCRIPTION' => "Blocked: type={$type}, id={$identifier}", ]); return false; } $cache->set($key, $count + 1, $limit['window']); return true; } } 

У журналі подій Бітрікс (CEventLog) фіксується: тип атаки, ідентифікатор, IP, час. Це допомагає аналізувати паттерни та коригувати ліміти.

Додатково перевіряємо email на disposable-домени та MX-запис, а телефон — за форматом та чорними списками. Це відсіває ще ~60% залишкового спаму.

Яку капчу обрати для українського сайту?

Для української аудиторії Google reCAPTCHA може блокуватися. Ми використовуємо Yandex SmartCaptcha або Cloudflare Turnstile — вони працюють без VPN і не вимагають введення символів. Інтеграція аналогічна: фронтенд отримує токен, сервер перевіряє через API.

// Yandex SmartCaptcha function verifyYandexCaptcha(string $token): bool { $ch = curl_init('https://smartcaptcha.yandexcloud.net/validate'); curl_setopt_array($ch, [ CURLOPT_POST => true, CURLOPT_POSTFIELDS => http_build_query([ 'secret' => $secretKey, 'token' => $token, 'ip' => $_SERVER['REMOTE_ADDR'], ]), CURLOPT_RETURNTRANSFER => true, CURLOPT_TIMEOUT => 5, ]); $result = json_decode(curl_exec($ch), true); curl_close($ch); return ($result['status'] ?? '') === 'ok'; } 

Порівняння провайдерів та їх ефективність

Провайдер Тип перевірки Доступність в Україні UX Ефективність
reCAPTCHA v3 Безкапчева (оцінка) Нестабільно Високий 90–95%
Yandex SmartCaptcha Безкапчева / кнопка Стабільно Високий 90–95%
Cloudflare Turnstile Безкапчева Стабільно Високий 85–90%

Ефективність комбінації базових методів проти спаму:

Метод Опис Ефективність
Honeypot Приховане поле для ботів ~80% спаму
Таймінг Відправлення швидше 3с = бот ~50% ботів
Rate limiter Ліміт відправлень з одного IP ~70% масових атак
reCAPTCHA v3 / Turnstile Безкапчева перевірка 90–95%
Перевірка email/телефону MX-запис, disposable-домени, чорні списки ~60% залишкового

Що входить у наш антиспам-пакет?

Етапи робіт

  1. Аналітика — збір вимог, аудит існуючих форм та навантаження.
  2. Проектування — вибір методів, архітектура з урахуванням кешу та продуктивності.
  3. Реалізація — розробка модуля, написання коду, юніт-тести.
  4. Тест — навантажувальне тестування (імітація ботів), перевірка UX.
  5. Деплой — розгортання на бойовому сервері, моніторинг перших днів.

Терміни та вартість

Базовий набір (honeypot + таймінг + rate limiter) — 3–5 днів. Повний стек зі SmartCaptcha та дашбордом — 1–2 тижні. Вартість розраховується індивідуально в залежності від обсягу форм та навантаження. В середньому економія бюджету на спамі — до 90% витрат на модерацію.

Що робити, якщо rate limiter блокує реальних користувачів?

Ми налаштовуємо адаптивні ліміти: наприклад, після 3 відправлень з одного IP на годину показуємо капчу замість повного блокування. Також ведемо лог та аналізуємо хибні спрацьовування, коригуючи пороги.

Чому варто обрати нас?

Ми — команда сертифікованих спеціалістів 1С-Бітрікс з досвідом більше 50 проектів у сфері захисту форм. Наші рішення перевірені на проектах з навантаженням 10 000+ заявок на добу. Гарантуємо підтримку та доопрацювання після впровадження. Замовте попередню оцінку вашого проекту — отримайте консультацію та розрахунок термінів. Зв'яжіться з нами для попередньої оцінки поточних форм.