HMAC (Hash-based Message Authentication Code), bir mesajın bütünlüğünü ve gönderenin kimliğini bir gizli anahtar ile kanıtlayan kriptografik imzadır. Ödeme webhook'ları ve API isteklerinin doğrulanmasında standarttır.
HMAC Nasıl Çalışır?
- Gönderen ve alıcı bir gizli anahtar paylaşır (paylaşılan secret)
- Gönderen mesajı + anahtar ile hash (SHA-256) hesaplar
- Bu hash'i mesajla birlikte (header'da) gönderir
- Alıcı aynı hesaplamayı yapar
- İmzalar eşleşirse mesaj doğrulanmış olur
Webhook'ta Tipik Kullanım
POST /webhook
X-Signature: sha256=a3f...8d2
Content-Type: application/json
{ "event": "payment.succeeded", ... }
Alıcı imzayı doğrulamadan veriyi işlemez.
Niye Önemli?
- Spoofing'i engeller — kötü niyetli aktör sahte webhook gönderemez
- Tampering'i tespit eder — body değiştirilirse imza tutmaz
- Replay attack için timestamp + nonce gerekir
Örnek Kullanım
- Tüm webhook'larda HMAC SHA-256 imza doğrulaması yapıyoruz.
- Replay saldırılarına karşı HMAC'ı timestamp + nonce ile birleştirdik.