Перейти к основному содержимому

Как пропускать на путь ссылки только подписанные вебхуки

С версии приложения 1.4.0

Добавьте на вкладке «Безопасность» туннеля, в разделе «Вебхуки», правило для пути обработчика и вставьте секрет отправителя: на этот путь пройдут только запросы с верной подписью, а остальные получат отказ ещё до сервиса.

Правила бывают только у HTTPS-ссылки с закреплённым адресом: без него раздел «Вебхуки» пишет «Нужен закреплённый адрес» (сколько держится ссылка). Первое правило работает на любом тарифе, следующие — на Pro и Ultra.

Шаги​

  1. В разделе «Туннели» откройте туннель с HTTPS-ссылкой, вкладку «Безопасность» и раздел «Вебхуки».
  2. Нажмите «Добавить правило вебхука».
  3. В «Провайдер» выберите отправителя: Stripe, GitHub, Т-Банк, CloudPayments, Slack, GitLab, Sentry, Linear или «Свой HMAC».
  4. В «Путь» впишите путь, куда отправитель шлёт уведомления, например /webhooks/stripe. С /* в конце правило действует и на всё, что ниже.
  5. В «Секрет» вставьте секрет отправителя: строка под полем говорит, какой именно, например у Stripe это signing secret, он начинается с whsec_. У «Свой HMAC» заполните ещё «Заголовок с подписью», «Алгоритм», «Кодировка» и, если нужно, «Префикс подписи», например sha256=.
  6. Если нужно, оставьте в «Методы» только нужные из POST, PUT и PATCH и задайте «Наибольшее тело»: по умолчанию это 25 МБ у GitHub и GitLab, 256 КБ у Т-Банка и CloudPayments и 1 МБ у остальных, а запрос с телом больше получает отказ («слишком большое тело»).
  7. Если на вкладке «Запросы» уже есть уведомление этого отправителя, выберите его в «Проверить на запросе из журнала»: при сохранении станет видно, тем ли секретом оно подписано.
  8. Нажмите «Добавить». Приложение напишет «Правило добавлено», а правило появится в списке «Правила вебхуков».

В списке правило меняют и удаляют значки «Изменить правило …» и «Удалить правило …».

Что ещё делает правило​

  • Пропускает только свой путь, а похожие на него, например /webhooks/stripe.json, закрывает: принимайте вебхуки только на пути правила.
  • На пути правила решает только оно: правила путей и логин ссылки там не действуют.
  • Пока у адреса есть правило, запрос GET, HEAD, OPTIONS или TRACE с телом получает отказ.
  • Если тариф Pro или Ultra кончился, второе и следующие правила приостанавливаются и их пути отвечают ошибкой 503; первое правило работает. Продлите тариф или удалите лишние правила.
  • Если в окне правила включить «Только помечать», запросы с неверной подписью дойдут до сервиса с пометкой на вкладке «Запросы». На ссылке с логином, ключами или правилами путей они всё равно отклоняются.

Stripe, Slack, GitLab с токеном подписи и Linear подписывают время: держите часы компьютера точными. Остальные время не подписывают, и настоящее уведомление можно прислать повторно: обрабатывайте каждое один раз по его номеру. Т-Банк подписывает не все поля: перед выдачей заказа проверьте платёж, как на странице о вебхуках оплаты.

Правило и секрет хранятся только на этом компьютере. Если ту же ссылку обслуживает другой компьютер, оставьте там путь под логином.

Проверьте​

Пришлите тестовое уведомление из кабинета отправителя: оно появится на вкладке «Запросы» с ответом вашего сервиса. Запрос без верной подписи получит отказ, а раздел «Вебхуки» покажет, сколько запросов отклонено и почему, например «неверная подпись».