HMAC imzası nedir?
Kısa tanım
HMAC imzası, bir mesajın gerçekten beklenen sistemden geldiğini ve yolda değiştirilmediğini kanıtlamak için, mesaj ile yalnızca iki tarafın bildiği gizli anahtardan bir özet (hash) fonksiyonuyla üretilen doğrulama kodudur. Webhook ve API isteklerinin doğrulanmasında kullanılır.
Son güncelleme:
HMAC imzası nedir, nasıl çalışır?
HMAC imzası nedir sorusunun yanıtı bir mühür benzetmesiyle kolaylaşır: gönderen, mesajı ve yalnızca iki tarafın bildiği gizli anahtarı bir özet (hash) fonksiyonundan geçirip kısa bir kod üretir ve mesajın yanına koyar. Alıcı aynı işlemi kendi elindeki anahtarla yineler; iki kod aynıysa mesaj beklenen sistemden gelmiş ve yolda değişmemiştir. Yöntemi tanımlayan RFC 2104 (yeni sekmede açılır), HMAC'i "kriptografik özet fonksiyonlarıyla mesaj doğrulama mekanizması" olarak tanımlar; üç girdisi vardır: gizli anahtar, mesaj ve özet fonksiyonu. Bugün özet fonksiyonu olarak çoğunlukla SHA-256 kullanılır; bu yüzden "HMAC-SHA256" yazımını görürsünüz.
Webhook doğrulamada HMAC neden gerekir?
Webhook adresi herkese açık bir adrestir; adresi bilen herkes oraya "ödeme alındı" diye sahte bir istek gönderebilir. HMAC imzası bunu engeller: gizli anahtarı bilmeyen biri geçerli imza üretemez, mesajın tek karakterini değiştiren biri de imzayı bozar. RFC 2104'e göre yöntemin gücü anahtarın gizliliğine bağlıdır; anahtar sızarsa imza anlamını yitirir.
| Konu | İmzasız webhook | HMAC imzalı webhook |
|---|---|---|
| Kaynak doğrulama | Yok; adresi bilen herkes gönderebilir | Yalnızca gizli anahtarı bilen sistem geçerli imza üretir |
| Değişiklik tespiti | Yok | Mesaj değişirse imza tutmaz, istek reddedilir |
| Gereken kurulum | Yalnızca adres | Adres ve iki tarafa yazılan gizli anahtar |
WooCommerce webhook imzası nasıl doğrulanır?
WooCommerce, webhook ayarındaki "Gizli anahtar" alanını kullanarak her teslimata bir imza ekler. WooCommerce webhook belgesine (yeni sekmede açılır) göre bu alan teslim edilen webhook'un özetini üretmek için kullanılır ve özet istek başlıklarında gider; WooCommerce'in kaynak kodunda imza, gövdenin gizli anahtarla alınan HMAC-SHA256 özetinin base64 kodlanmış hâlidir ve X-WC-Webhook-Signature başlığında taşınır. Alıcı taraf aynı hesabı yapıp sonucu başlıkla karşılaştırır:
$beklenen = base64_encode(hash_hmac('sha256', $govde, $gizli_anahtar, true));
if (hash_equals($beklenen, $_SERVER['HTTP_X_WC_WEBHOOK_SIGNATURE'])) {
// istek WooCommerce'ten geldi, işle
}
Bu kontrolü webhook'u alan sistem yapar; mağaza sahibi yalnızca gizli anahtarı iki tarafa aynı yazar. WhatsApp Sipariş Bildirimi kurulumunda gizli anahtar olarak lisans anahtarı kullanılır; lisans anahtarı yenilenirse webhook'taki gizli anahtar da güncellenir, yoksa bildirimler durur.
E-ticarette örnek
Sedeus Bağlayıcı, mağazanıza kurulan ücretsiz eklentidir ve yalnızca mağazanızda üretilen bağlantı anahtarıyla imzalanmış isteklere yanıt verir. İmzalı istekler 5 dakika geçerlidir; sunucunun saati bu süreden fazla kaymışsa istek reddedilir. Böylece yakalanan eski bir istek sonradan yeniden gönderilemez. Anahtarın nasıl üretildiği, yenilendiği ve bağlantının nasıl kapatıldığı Sedeus Bağlayıcı kurulum rehberinde anlatılır. Ödeme sağlayıcınızdan ya da kargo firmasından gelen bildirimlerin imzasının doğrulanıp doğrulanmadığını görmek için ücretsiz sistem analizinden yazabilirsiniz.
Nerede karşınıza çıkar?
- WooCommerce webhook isteklerindeki X-WC-Webhook-Signature başlığı
- Ödeme sağlayıcısından gelen "ödeme alındı" bildiriminin doğrulanması
- Kargo firmasının gönderi durumu webhook'ları
- WhatsApp Cloud API webhook'larının imza doğrulaması
- Sedeus Bağlayıcı'ya gelen imzalı rapor ve fiyat güncelleme istekleri
İmzalı istek nasıl çalışır?
Sedeus Bağlayıcı yalnızca mağazanızda üretilen anahtarla imzalanmış isteklere yanıt verir; anahtar, geçerlilik süresi ve güvenlik duvarı ayrıntıları rehberde.
HMAC imzası hakkında sık sorulanlar
HMAC imzası şifreleme midir?
Gizli anahtarı değiştirirsem ne olur?
İmzalı istekte zaman damgası neden kullanılır?
İlk adımı birlikte atalım
Operasyonunuzdaki elle yürüyen işleri inceleyip ayda kaç saatin sistemle yürüyebileceğini yazılı olarak veriyoruz; teknik bilgi ve taahhüt gerekmez.
- Kredi kartı yok
- 1 iş gününde dönüş
- KVKK uyumlu
- Veriler şifreli bağlantıyla iletilir