Безопасность формы обратной связи — что маркетологу лучше прописать в ТЗ
В идеальном мире ТЗ на разработку сайта составляет системный аналитик. В суровой реальности малого и среднего бизнеса этим часто занимается маркетолог, потому что больше просто некому.
Раньше я тоже была в этой лодке: писала требования, совершала классические ошибки новичка и молилась, чтобы разработка не встала. Обходилось, но нервы трепали знатно. Сегодня мой подход изменился. 15 лет опыта в маркетинге плюс профильное обучение на системного аналитика дали свой результат: теперь я знаю, как составить грамотное ТЗ, которое разработчики поймут с полуслова, а не будут мучить десятками уточняющих вопросов.
Но для маркетологов‑новичков этот небольшой чек‑лист по ФОС, надеюсь, будет полезен.
Форма обратной связи — это «входная дверь» в компанию. Если ее не защищать, то прилетит ответка:
Утечка данных клиентов — штрафы по 152-ФЗ (в России) или GDPR (в Европе) до 4% годового оборота;
Спам‑атака через форму — падение домена в репутации, письма от твоего домена попадают в спам, а поисковые системы «пессимизируют» твой сайт;
Фальшивые заявки — отдел продаж тратит время на «липовые» лиды, портится статистика;
Подмена контента — на сайте появляются левые ссылки или вирусы.
Ты как маркетолог не обязан настраивать это технически. Но ты обязан прописать эти требования в ТЗ, чтобы разработчик их выполнил, а потом — проверить результат.
На что обязательно нужно обратить внимание маркетологу при написании ТЗ для сайта и формы обратной связи:
HTTPS (SSL‑сертификат) — обязательно
Что требовать в ТЗ:
Форма должна работать только через HTTPS. Все данные (имя, телефон, email, сообщение) должны передаваться в зашифрованном видеКак проверить:
В адресной строке браузера — замок. Если нет замка — форма небезопасна
Проверка протокола https
Текст в ТЗ: Страница с формой обратной связи должна быть доступна только по протоколу HTTPS. При переходе по HTTP должен выполняться автоматический редирект (301) на HTTPS‑версию
Защита от автоматической отправки (капча / honeypot)
Что требовать в ТЗ:
Обязательная защита формы от автоматических отправок. Минимальный уровень — honeypot или reCAPTCHA v3Виды защиты (от простых к сложным):
Honeypot (скрытое поле, которое заполняют только боты) — просто, не мешает пользователю (всегда нужно проверять на корректность отработки формы после установки — иногда «косячит» с отправкой формы в СРМ)
reCAPTCHA v2 («я не робот») — эффективно, но раздражает
reCAPTCHA v3 (невидимая, оценивает поведение) — лучший баланс

reCAPTCHA v2
Форма должна быть защищена от автоматических отправок с использованием [выбрать: один из вариантов выше]. При превышении лимита отправок с одного IP (например, 5 заявок в минуту) форма должна временно блокироваться на 1 час для пользователя.
Валидация полей на стороне сервера
Злоумышленник может отправить в поле «Имя» не текст, а HTML‑код или JavaScript. Если разработчик сделал валидацию только в браузере (на стороне клиента), этот код попадет в CRM или в письмо менеджеру.Что требовать в ТЗ:
Все поля должны проверяться на сервере. Пользователь не должен иметь возможность отправить теги HTML, JavaScript или SQL‑команды.Разрешить:
Только буквы, цифры, пробелы, знаки препинания (нужный набор описать)
Текст в ТЗ: Валидация полей формы должна выполняться на стороне сервера (не только в браузере). Допустимые символы в поле «Имя»: только буквы, пробел, дефис. Поле «Телефон»: только цифры, +, пробел, скобки. Все HTML‑теги и JavaScript‑код должны экранироваться (превращаться в безопасный текст).
Как проверить это самостоятельно? Очень просто. Введи в поле «Имя» на сайте вот такой тестовый код: <script>alert('test')</script>. Отправь форму, а затем открой письмо, которое пришло менеджеру. Или загляни в CRM. Если защита работает правильно, ты увидишь там просто этот набор символов как обычный текст. А вот если на экране выскочило всплывающее окно — значит, сайт уязвим
Ограничение длины полей
Без ограничения длины злоумышленник может отправить в поле «Сообщение» 1 миллион символов, что может перегрузить и положить сервер.Что требовать в ТЗ:
Для каждого поля указать максимальную длину (на сервере, не только в браузере).Пример (почти всегда этого достаточно):
Имя: 50 символов, Email: 100 символов, Телефон: 20 символов, Сообщение: 2000 символов.
Текст в ТЗ: Для каждого поля формы заданы следующие ограничения длины (проверка на сервере): например, 55. При превышении длины форма возвращает понятную пользователю ошибку.
Как проверить самостоятельно: Попробуй отправить в поле «Имя» текст длиной 100 символов. Форма должна выдать ошибку.
Email‑проверка: не любой текст с собачкой
Даже через поле email можно получить email‑инъекцию, что может привести к подмене получателя.Что требовать в ТЗ:
Проверка формата email по RFC 5322 (на сервере) + запрет частых отправок с одного email.Что проверяем:
Наличие @ и точки после @, отсутствие пробелов, запрет спецсимволов кроме разрешенных.
Текст в ТЗ: Поле «Email» должно проходить проверку формата на сервере. Допустимый шаблон: локальная_часть@домен.зона (без пробелов, запрещены символы < > ( ) [ ];: «). Один email‑адрес может отправить не более 3 заявок в час.»
Как проверить самостоятельно: Попробуй отправить test@test — ошибка. Отправь test@test.com — ок.
Логирование без сохранения чувствительных данных
Логи сервера и база данных формы часто хранят всё, что отправил пользователь. Если лог попал к злоумышленнику — он получит телефоны, email‑ы, тексты сообщений. Это нарушение закона (152-ФЗ / GDPR).Что требовать в ТЗ:
Логи должны храниться только необходимое время (например, 30 дней). Паспортные данные, детали платежей, пароли — не логировать вообще.Что запретить в логах:
Номер телефона (или маскировать: +7******1234) Точный текст сообщения (хранить только в защищенной CRM).
Текст в ТЗ: В логах веб‑сервера и базы данных не должны сохраняться: полный номер телефона, точный email, текст сообщения (только факт отправки). Для этих данных используется маскировка. Срок хранения логов — не более 30 дней.
Как проверить самостоятельно: Попросите разработчика показать структуру таблицы в БД, куда попадают данные из формы. Убедись, что нет полей с открытыми телефонами в логах.
Согласие на обработку данных (галочка)
Без явного согласия пользователя — штрафы до 4% оборота (GDPR) или до 500 тыс. руб. (152-ФЗ). Пользователь должен знать, что с его данными будут делать, и добровольно согласиться.)Что требовать в ТЗ:
Чекбокс «Я согласен на обработку моих персональных данных» — активным его сделать нельзя. Ссылка на политику конфиденциальности — обязательна.Минимальный набор:
Текст согласия (конкретный, без «и так далее»). Ссылка на страницу с политикой конфиденциальности. Чексбокс без предустановленной галочки.
Текст в ТЗ: Рядом с кнопкой отправки размещен чекбокс с текстом: «Я соглашаюсь на обработку моих персональных данных в соответствии с [ссылка на Политику конфиденциальности]». Чекбокс по умолчанию не отмечен. Отправка формы возможна только при его активации.
Отправка дополнительных файлов
Чтобы обезопасить заливку к вам на сервер каких‑то скрытых скриптов, лучше прописать ограничения для разработчика заранее.Что требовать в ТЗ:
Проверка типа файла (только jpg/png/pdf/word), проверка размера (не более 2–5 MB).Что проверять:
антивирусная проверка, переименование файла перед сохранением.
Прикрепление дополнительного файла к форме
Плохое ТЗ — это всегда деньги на ветер и подпорченные нервы: бюджет уходит на переделки, время — на бесконечные согласования. Репутация страдает из‑за багов на сайте.
Хорошее ТЗ работает как ваша личная страховка. Оно спасает маркетолога и гарантирует, что на выходе бизнес получит именно тот инструмент, который нужен, без неприятных сюрпризов. Поэтому тот чек‑лист для формы обратной связи, который я дал выше, лучше реально учесть в работе
Если тема будет интересна маркетологам, то продолжим с других разделов ТЗ;)