На главную
Шифрование и ключи
Подписи вебхуков
Считает и проверяет подпись по правилам GitHub, Stripe, Slack, Shopify и Telegram.
HMAC-SHA256 от тела запроса, ключ — секрет вебхука.
Байт в байт, как пришло: лишний перенос строки ломает подпись.
Заголовок с подписью
Заполните секрет и тело
Подпись считается в браузере через Web Crypto
Проверить чужую подпись
Сравнение идёт за постоянное время: так проверяют подписи на сервере, чтобы по скорости ответа нельзя было подобрать подпись побайтово.
Почему подпись «не сходится»
- Тело прочитано после разбора JSON и собрано заново — порядок ключей и пробелы уже другие. Подписывать надо сырую строку запроса.
- Фреймворк дописал перевод строки в конец или обрезал его.
- Взят не тот секрет: у Stripe свой на каждый эндпоинт, у GitHub — на каждый вебхук.
- Для Slack и Stripe в подпись входит время. Старые метки надо отклонять: это защита от повторной отправки перехваченного запроса.