Как защитить webhook в n8n: секрет, проверка и ограничения
· 2 мин чтения · Редакция Skill Unit
Webhook в n8n это адрес, на который внешняя система отправляет данные: форма на сайте, платёжный сервис, CRM. Если адрес стал известен посторонним, они могут слать на него что угодно: пустые заявки, спам, огромные запросы, попытки запустить процесс с нужными им данными. Защита занимает несколько минут.
Угрозы, от которых защищаемся
- Посторонние запросы с поддельными данными.
- Массовая отправка запросов, которая забивает очередь и расходует лимиты.
- Повторная отправка одного и того же события.
- Попытки передать данные в неожиданном формате и сломать цепочку.
Шаг 1. Используйте HTTPS и не публикуйте адрес
Адрес webhook не должен попадать в публичный код страницы, если можно обойтись без этого. Если форма на сайте шлёт данные напрямую на webhook, адрес виден любому. Надёжнее передавать запрос через ваш сервер, который сам обращается к n8n и добавляет секрет.
Шаг 2. Секретный заголовок
В узле Webhook включите аутентификацию, например Header Auth, и задайте имя заголовка и длинное случайное значение. Отправитель добавляет этот заголовок в запрос, n8n отвергает запросы без него. Секрет храните в учётных данных n8n и в переменных окружения отправителя, но не в открытом коде страницы.
Шаг 3. Проверяйте подпись, если сервис её поддерживает
Многие сервисы подписывают запросы: присылают в заголовке значение, вычисленное из тела запроса и общего секрета. Проверьте подпись в первом узле цепочки и останавливайте процесс, если она не совпала. Это надёжнее общего токена, потому что подпись нельзя использовать повторно для другого тела запроса.
Шаг 4. Проверяйте входные данные
- Сразу после webhook добавьте проверку обязательных полей и их типов.
- Ограничьте длину текстов, чтобы огромный запрос не сломал цепочку.
- Если поле должно быть из списка, проверьте, что значение входит в список.
- При неверных данных отвечайте ошибкой и не запускайте дальнейшие узлы.
Шаг 5. Защита от повторов и перегрузки
Платёжные и почтовые сервисы иногда отправляют одно и то же событие дважды. Храните идентификатор обработанного события (например, в таблице) и пропускайте повторы. От перегрузки защищает ограничение частоты на уровне прокси или вашего сервера перед n8n, если ваш тариф или установка это допускают.
Шаг 6. Ограничьте метод и ответ
- Разрешите только нужный метод, например POST.
- В ответе не показывайте внутренние ошибки и данные, достаточно статуса и короткого сообщения.
- Тестовый адрес webhook используйте для настройки, а в рабочей цепочке боевой, и отключайте неиспользуемые.
Учётные данные и доступ
- Ключи и пароли храните только в разделе учётных данных, не в тексте узлов.
- Давайте ключам минимальные права, нужные для работы.
- Если ключ мог попасть в чат, заметки или публичный репозиторий, перевыпустите его.
- Не отправляйте в цепочки лишние персональные данные: чем меньше данных, тем меньше риск.
Чек-лист перед запуском
- Включена аутентификация или проверка подписи.
- Данные проверяются сразу после webhook.
- Повторы не создают дубли.
- Ошибки приходят вам на почту или в мессенджер.
- Лишние тестовые webhook отключены.
В курсе «Автоматизация без кода на n8n» мы строим цепочки с защитой с самого начала: проверяем входные данные, ловим сбои и учимся не оставлять ключи на виду. Первый урок бесплатный.
Хотите пройти путь на практике?
Курс «Автоматизация без кода на n8n»: короткие уроки, практические задания и проверка ответов. Первый урок бесплатно.
Смотреть курс