Caputchin
Размещённая проверка

Проверяй без бэкенда

Токен Caputchin ничего не доказывает, пока что-то его не подтвердит. Обычно это что-то это твой собственный бэкенд, который вызывает /siteverify и решает, доверять ли запросу. Размещённая проверка переносит этот шаг на Caputchin: твоя форма отправляется на пересыльщик Caputchin, Caputchin проверяет токен, отбрасывает всё, что не прошло, и пересылает только проверенные отправки в назначение, которое ты выбираешь.

Это то же решение о доверии, что и серверная проверка, выполняемое на стороне Caputchin вместо твоей. Суть в том, что нет вызова /siteverify, который надо писать, и нет секрета, который надо держать на сервере, потому что сервера нет.

Размещённая проверка это платная функция, доступная на Alpha и выше.

Для кого она

Размещённая проверка существует для случая, когда запускать бэкенд только чтобы проверить токен это больше, чем нужно проекту.

ТыПочему она подходит
Статический сайт (Webflow, Framer, чистый HTML на CDN)Нет сервера, чтобы принять форму или вызвать /siteverify.
No-code конструктор (Wix, Squarespace, Carrd)Ты не можешь добавить серверный код проверки.
Соло-разработчик или маленькая командаКонтактная форма или форма регистрации не стоит того, чтобы поднимать и эксплуатировать бэкенд ради неё.
Уже запускаешь бэкенд, но не для этой формыТы можешь направить одну форму на пересыльщик и оставить остаток своего стека в покое.

Если ты запускаешь бэкенд и хочешь проверять там, используй вместо этого проверь на своём бэкенде. Эти двое альтернативы, а не слои.

Как это работает

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

Назначения

Ты настраиваешь одно или оба на каждый ключ сайта. Включить оба это частый шаблон: слать на вебхук для обработки и слать копию себе на email.

НазначениеЧто ты получаешь
ВебхукJSON-POST, несущий поля твоей формы плюс метаданные проверки Caputchin.
EmailОбычное письмо с полями формы и подвалом, отмечающим, что Caputchin проверил отправку.

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

Что держится в тайне

Размещённая проверка следует той же позиции без-данных-о-посетителе, что и остальной Caputchin:

  • Отправки никогда не хранятся. Они живут в памяти процесса на время пересылки, затем их нет. Построй собственную запись на стороне вебхука, если хочешь её.
  • Никаких данных об отправителе не собирается. Ни IP, ни User-Agent, ни отпечатка, ни отслеживания.
  • Телеметрия только сводная. Caputchin считает успехи и сбои доставки, чтобы ты видел, здоровы ли твои назначения, никогда содержимое какой-либо отправки. Смотри статистику.

Как держится в безопасности URL, предоставленный клиентом

URL, который будут вызывать серверы Caputchin, это классический риск подделки запроса на стороне сервера (Server-Side Request Forgery). Пересыльщик отклоняет любой URL вебхука, чей хост это приватный, петлевой, link-local или облачно-метаданный адрес, и когда ты его сохраняешь, и снова прямо перед каждой доставкой. Заблокированные категории включают:

КатегорияПримеры
Петлевые и неуказанные127.0.0.1, 0.0.0.0, ::1
Приватные (RFC 1918)10.x.x.x, от 172.16.x.x до 172.31.x.x, 192.168.x.x
Link-local и облачные метаданные169.254.x.x, в частности метаданный эндпоинт 169.254.169.254
Carrier-grade NATот 100.64.x.x до 100.127.x.x
Multicast и зарезервированные224.x.x.x и выше
Внутренние хостнеймыlocalhost и любой хост, заканчивающийся на .local, .localhost или .internal
Приватные IPv6адреса link-local (fe80::/10) и unique-local (fc00::/7)

Кодировки, которые пытаются замаскировать заблокированный адрес, тоже ловятся: десятично-целочисленный хост вроде http://2130706433/ или hex-хост вроде http://0x7f000001/ (оба означают 127.0.0.1) отклоняются. Принимаются только URL http и https; любая другая схема отказывается. Пересыльщик также отказывается следовать редиректам, так что эндпоинт вебхука не может отбить вызов на внутреннюю цель. Заблокированный URL всплывает как общая ошибка, а не конкретная, так что его нельзя использовать для зондирования сети. Твой вебхук поэтому должен жить по публичному https-URL.

Что намеренно оставлено за бортом

  • Нет входящего ящика отправок. Нет хранимой истории отправок для просмотра в панели.
  • Нет собственных адаптеров Discord, Slack, Telegram или SMS. Только вебхук и email. Вебхук может разветвиться на любой из них на твоей стороне.
  • Нет загрузки файлов. Пересыльщик принимает текстовые поля; отправка, несущая файл, отклоняется.
  • Нет преобразования нагрузки. Что форма отправляет, то твоё назначение и получает, плюс метаданные проверки.

См. также

На этой странице