Fri Jan 09 2026
...
Оновлення безпеки вебхуків
Що нового
Раніше налаштування вебхуків було більш ускладненим в порівнянні з іншими платформами. Ми вважали це позитивним, через додаткові заходи безпеки, які були необхідні, проте ми нещодавно визначили механізм, який є настільки ж безпечним, але ця безпека є опціональною.
Попередня поведінка
Раніше система передавала ваш API ключ у корисному навантаженні та очікувала, що ви його підтвердите. Якщо ви не повернули 401 за недійсний API ключ, система не дозволяла налаштування.
Нова поведінка
Тепер система не передаватиме API ключ для нових конфігурацій вебхуків. Натомість для нових та існуючих інтеграцій додається підпис HMAC. Ви можете захотіти або не захотіти перевірити цей підпис, залежно від вашого рівня необхідної безпеки.
Існуючі конфігурації продовжать передавати API ключ - ви тепер можете запросити відключення цього через підтримку.
Перевірка підпису HMAC
FastComments тепер надсилає наступні заголовки з кожним запитом вебхука:
| Заголовок | Опис |
|---|---|
X-FastComments-Timestamp |
Unix-мітка часу (секунди), коли запит був підписаний |
X-FastComments-Signature |
Підпис HMAC-SHA256 у форматі sha256=<hex> |
token |
Ваш API Secret (збережено для зворотної сумісності) |
Як обчислюється підпис
- Об’єднати:
timestamp + "." + JSON_payload_body - Обчисліть HMAC-SHA256, використовуючи ваш API Secret як ключ
- Кодувати результат в hex
Приклад перевірки (Python)
import hmac
import hashlib
import time
import json
def verify_webhook_signature(headers, body, api_secret):
timestamp = headers.get('X-FastComments-Timestamp')
signature = headers.get('X-FastComments-Signature')
if not timestamp or not signature:
return False
# Перевірити, чи мітка часу не стара
now = int(time.time())
if abs(now - int(timestamp)) > 300:
return False
# Перевірити підпис
payload = json.dumps(body, separators=(',', ':'))
message = f"{timestamp}.{payload}"
expected = hmac.new(
api_secret.encode(),
message.encode(),
hashlib.sha256
).hexdigest()
return signature == f"sha256={expected}"
Вибір HTTP-методу
Крім того, з цим оновленням - ви тепер можете налаштувати HTTP-метод для кожного типу події вебхука:
- Створити подію: POST або PUT (за замовчуванням: PUT)
- Оновити подію: POST або PUT (за замовчуванням: PUT)
- Видалити подію: DELETE, POST або PUT (за замовчуванням: DELETE)
Переваги безпеки
Нова система має кілька переваг:
- Захист від атак "людина посередині"
- Запобігання атакам повтору через перевірку мітки часу
- Виявлення підроблення корисного навантаження
Зворотна сумісність
Заголовок token, що містить ваш API Secret, все ще надсилається з кожним запитом. Існуючі інтеграції будуть продовжувати працювати без модифікацій, і, як вже згадувалося, ви можете запитати відключення старої поведінки через підтримку.
Документація
Для повної документації, ознайомтеся з нашим Посібником по вебхукам.
На завершення
Як і всі великі випуски, ми раді, що змогли витратити час на оптимізацію, тестування та належне випускання цих змін. Дайте нам знати внизу, якщо ви виявите будь-які проблеми.
Дякуємо!
