Webhook signing — механизм, при котором sender добавляет HMAC-подпись payload в HTTP header, receiver проверяет подпись по shared secret. Без signing любой, кто знает webhook URL, может отправить fake events. Стандартный pattern: HMAC-SHA256(secret, timestamp + body) → header X-Hub-Signature-256. Используется в Stripe, GitHub, Telegram, YooKassa, Slack.
Ниже: подробности, пример, смежные термины, FAQ.
Бесплатный онлайн-инструмент — сканер безопасности сайта: результат мгновенно, без регистрации.
hash_equals() в PHP, crypto.timingSafeEqual() в Node// PHP verification
$expected = hash_hmac("sha256", $body, $secret);
$actual = $_SERVER["HTTP_X_SIGNATURE_256"];
if (!hash_equals($expected, $actual)) return 401;HMAC подпись (Hash-based Message Authentication Code) используется для проверки целостности и подлинности данных, отправляемых через вебхуки. Она обеспечивает защиту от подделки сообщений, позволяя получателю удостовериться, что данные действительно были отправлены авторизованным источником. Для создания HMAC подписи используется секретный ключ и хэш-функция (например, SHA-256), что делает этот метод надежным для обеспечения безопасности вебхуков.
Для настройки HMAC подписи в вашем приложении, выполните следующие шаги:
openssl rand -base64 32import hmac
import hashlib
def create_hmac_signature(secret, data):
return hmac.new(secret.encode(), data.encode(), hashlib.sha256).hexdigest()import requests
url = 'https://example.com/webhook'
data = '{"event":"order_created"}'
secret = 'ваш_секретный_ключ'
sig = create_hmac_signature(secret, data)
headers = {'X-Hub-Signature': sig}
response = requests.post(url, data=data, headers=headers)Таким образом, получатель сможет проверить подпись, используя тот же секретный ключ.
При получении вебхука, важно проверить HMAC подпись, чтобы удостовериться в подлинности сообщения. Вот как это можно сделать:
X-Hub-Signature.received_signature = request.headers.get('X-Hub-Signature')calculated_signature = create_hmac_signature(secret, request.data.decode())if hmac.compare_digest(received_signature, calculated_signature):
print('Подпись верна, сообщение подлинно')
else:
print('Подпись неверна, возможно подделка')Использование hmac.compare_digest важно для предотвращения атак на время, так как оно сравнивает строки безопасным способом.
Инструмент проверяет HTTP-заголовки безопасности, конфигурацию SSL/TLS, утечки серверной информации и защиту от распространённых атак (XSS, clickjacking, MIMEsniffing). Оценка от A до F показывает общий уровень защиты.
Проверка Content-Security-Policy, HSTS, X-Frame-Options, X-Content-Type-Options, Referrer-Policy и других.
Версия TLS, срок сертификата, цепочка доверия, поддержка HSTS.
Поиск раскрытых серверных версий, debug-режимов, открытых конфигов и директорий.
Детальный отчёт с объяснением каждой проблемы и конкретными шагами для исправления.
аудит HTTP-заголовков
проверка конфигурации
CSP и HSTS настройка
соответствие стандартам
Strict-Transport-Security.Server: Apache/2.4.52 помогает атакующим подобрать эксплойт. Скройте версию.DENY или SAMEORIGIN.nosniff браузер может интерпретировать файлы неправильно (MIME sniffing).Content-Security-Policy-Report-Only, мониторьте нарушения, затем включите.Server, X-Powered-By, X-AspNet-Version из ответов.История security-проверок и мониторинг HTTP-заголовков безопасности.
Зарегистрироваться (FREE)Secret в header = посланный в plain. HMAC подписывает body, secret не передаётся по сети.
Timestamp + nonce в payload. Receiver проверяет что timestamp свежий (5 min window) и nonce не использован.
Stripe (Stripe-Signature), GitHub (X-Hub-Signature-256), Slack (X-Slack-Signature), Telegram (X-Telegram-Bot-Api-Secret-Token), YooKassa.
Бесплатный тариф — 10 мониторов, проверки каждые 5 мин, без карты. Платные тарифы — интервал от 1 минуты и проверки из нескольких регионов.