Как пропускать на путь ссылки только подписанные вебхуки
С версии приложения 1.4.0
Добавьте на вкладке «Безопасность» туннеля, в разделе «Вебхуки», правило для пути обработчика и вставьте секрет отправителя: на этот путь пройдут только запросы с верной подписью, а остальные получат отказ ещё до сервиса.
Правила бывают только у HTTPS-ссылки с закреплённым адресом: без него раздел «Вебхуки» пишет «Нужен закреплённый адрес» (сколько держится ссылка). Первое правило работает на любом тарифе, следующие — на Pro и Ultra.
Шаги
- В разделе «Туннели» откройте туннель с HTTPS-ссылкой, вкладку «Безопасность» и раздел «Вебхуки».
- Нажмите «Добавить правило вебхука».
- В «Провайдер» выберите отправителя: Stripe, GitHub, Т-Банк, CloudPayments, Slack, GitLab, Sentry, Linear или «Свой HMAC».
- В «Путь» впишите путь, куда отправитель шлёт уведомления, например
/webhooks/stripe. С/*в конце правило действует и на всё, что ниже. - В «Секрет» вставьте секрет отправителя: строка под полем говорит, какой именно, например у Stripe это signing secret, он начинается с
whsec_. У «Свой HMAC» заполните ещё «Заголовок с подписью», «Алгоритм», «Кодировка» и, если нужно, «Префикс подписи», напримерsha256=. - Если нужно, оставьте в «Методы» только нужные из POST, PUT и PATCH и задайте «Наибольшее тело»: по умолчанию это 25 МБ у GitHub и GitLab, 256 КБ у Т-Банка и CloudPayments и 1 МБ у остальных, а запрос с телом больше получает отказ («слишком большое тело»).
- Если на вкладке «Запросы» уже есть уведомление этого отправителя, выберите его в «Проверить на запросе из журнала»: при сохранении станет видно, тем ли секретом оно подписано.
- Нажмите «Добавить». Приложение напишет «Правило добавлено», а правило появится в списке «Правила вебхуков».
В списке правило меняют и удаляют значки «Изменить правило …» и «Удалить правило …».
Что ещё делает правило
- Пропускает только свой путь, а похожие на него, например
/webhooks/stripe.json, закрывает: принимайте вебхуки только на пути правила. - На пути правила решает только оно: правила путей и логин ссылки там не действуют.
- Пока у адреса есть правило, запрос GET, HEAD, OPTIONS или TRACE с телом получает отказ.
- Если тариф Pro или Ultra кончился, второе и следующие правила приостанавливаются и их пути отвечают ошибкой 503; первое правило работает. Продлите тариф или удалите лишние правила.
- Если в окне правила включить «Только помечать», запросы с неверной подписью дойдут до сервиса с пометкой на вкладке «Запросы». На ссылке с логином, ключами или правилами путей они всё равно отклоняются.
Stripe, Slack, GitLab с токеном подписи и Linear подписывают время: держите часы компьютера точными. Остальные время не подписывают, и настоящее уведомление можно прислать повторно: обрабатывайте каждое один раз по его номеру. Т-Банк подписывает не все поля: перед выдачей заказа проверьте платёж, как на странице о вебхуках оплаты.
Правило и секрет хранятся только на этом компьютере. Если ту же ссылку обслуживает другой компьютер, оставьте там путь под логином.
Проверьте
Пришлите тестовое уведомление из кабинета отправителя: оно появится на вкладке «Запросы» с ответом вашего сервиса. Запрос без верной подписи получит отказ, а раздел «Вебхуки» покажет, сколько запросов отклонено и почему, например «неверная подпись».