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

Защита вебхуков

Чтобы обеспечить подлинность и целостность вебхуков, мы предоставляем заголовок X-Signature, который можно проверить. Этот заголовок содержит подпись, сгенерированную с использованием вашего personal_secret, которую вы можете проверить, чтобы подтвердить, что запрос вебхука является подлинным и не был изменён.

  • Установка личного секрета: Если у вас ещё не установлен личный секрет, учтите, что добавление такового включит заголовок X-Signature во всех исходящих вебхуках. Убедитесь, что ваш сервер может принимать и проверять этот заголовок.
  • Обновление личного секрета: Если у вас уже есть личный секрет и вы решите его изменить, новый секрет немедленно вступит в силу для уведомлений вебхуков. Убедитесь, что ваш сервер обновлён для использования нового секрета, чтобы избежать сбоев.

Вы можете установить или сгенерировать заново свой личный секрет, перейдя в настройки профиля на нашей платформе. Выполните следующие шаги:

  1. Перейдите в настройки профиля: Настройки профиля
  2. Найдите раздел личного секрета: Найдите раздел с надписью «Personal Secret».
  3. Установите или сгенерируйте заново секрет:
    • Если секрет не установлен, нажмите «Set Personal Secret», чтобы сгенерировать новый секрет.
    • Если секрет уже присутствует, нажмите «Regenerate Secret», чтобы создать новый.

Извлечение txid из payload:

txid (идентификатор транзакции) — это уникальный идентификатор, включённый в payload вебхука. Этот ID используется как часть процесса генерации подписи. Объединение txid с личным секретом:

Личный секрет — это общий секретный ключ, известный только отправителю (например, провайдеру вебхука) и получателю (вашему приложению). Этот секретный ключ гарантирует, что подпись может быть сгенерирована и проверена только сторонами, которые знают секрет. Генерация HMAC (Hash-based Message Authentication Code):

HMAC — это специальный тип кода аутентификации сообщений (MAC), который использует криптографическую хеш-функцию и секретный ключ. В данном случае txid и личный секрет используются для генерации HMAC. HMAC обычно генерируется с использованием алгоритма хеширования, например SHA-256.

Когда вы получаете вебхук, важно проверить заголовок X-Signature, чтобы убедиться, что запрос поступил из доверенного источника. Ниже приведены примеры того, как выполнить эту проверку на Python, Java, PHP и JavaScript.

import hmac
import hashlib
import base64
def verify_signature(txid, received_signature, personal_secret):
# Generate the expected signature
expected_signature = base64.b64encode(hmac.new(
personal_secret.encode(),
txid.encode(),
hashlib.sha256
).digest()).decode()
# Compare the expected signature with the received signature
return hmac.compare_digest(expected_signature, received_signature)
# Example usage
txid = 'your_txid_here'
received_signature = 'received_signature_here'
personal_secret = 'your_personal_secret_here'
if verify_signature(txid, received_signature, personal_secret):
print("Signature is valid.")
else:
print("Invalid signature.")

Благодаря возможности управлять своим personal_secret, у вас есть расширенный контроль над безопасностью ваших вебхуков. Всегда следите за тем, чтобы обработчик вебхуков вашего сервера обновлялся каждый раз при изменении personal_secret, чтобы избежать сбоев в обслуживании. Если у вас есть вопросы или проблемы, обратитесь в поддержку.