Gizli anahtarınızla HMAC-SHA-256 ve HMAC-SHA-512 imzaları hesaplayın — doğrudan tarayıcınızda.
HMAC (Hash-based Message Authentication Code, RFC 2104), gizli bir anahtarı bir mesajla birleştirerek yalnızca aynı anahtarı elinde tutan birinin yeniden üretebileceği bir imza oluşturur. Çoğu webhook doğrulamasının arkasındaki mekanizma budur — Stripe, GitHub, Shopify ve Slack, webhook yüklerini HMAC-SHA-256 ile imzalar — ayrıca imzalı URL'ler, API istek imzalama ve oturum belirteci bütünlük denetimlerinde de kullanılır. Bir webhook doğrulaması başarısız olduğunda, beklenen imzayı bu araçla elle hesaplamak genellikle uyumsuzluğu bulmanın en hızlı yoludur.
Hesaplama, tarayıcının yerel WebCrypto API'si olan SubtleCrypto'yu kullanır: anahtar crypto.subtle.importKey ile içe aktarılır ve imza crypto.subtle.sign ile üretilir; böylece kriptografi, JavaScript'in yeniden icat ettiği bir şey değil, tarayıcının denetimden geçmiş kendi uygulamasıdır. HMAC basitçe hash(anahtar + mesaj) değildir: anahtarı iki farklı dolguyla karıştırarak iki kez hash'ler (aşağıdaki formüle bakın) ve bu, naif kurguyu kıran uzunluk uzatma saldırılarını kapatır. Buradaki çıktı, RFC 4231 test vektörlerini birebir yeniden üretir.
Gizli anahtarınız tarayıcıdan asla çıkmaz: bu araç hiçbir ağ isteği yapmaz, hiçbir şey yüklemez ve hiçbir şey saklamaz — bunu tarayıcınızın geliştirici araçlarındaki ağ sekmesinden doğrulayabilirsiniz. Üretim kodu için iki pratik not: zamanlama saldırılarını önlemek için imzaları her zaman sabit zamanlı bir karşılaştırmayla kıyaslayın ve her iki tarafın tam olarak aynı baytları imzaladığından emin olun — görünmez bir satır sonu veya yeniden serileştirilmiş bir JSON gövdesi, eşleşmeyen HMAC'lerin en yaygın nedenidir.
HMAC(K, m) = H((K xor opad) || H((K xor ipad) || m)); burada H hash fonksiyonudur ve ipad (bayt 0x36) ile opad (bayt 0x5c), hash blok boyutuna kadar yinelenir. İç içe çift hash'leme, naif hash(anahtar + mesaj) kurgularını kıran uzunluk uzatma saldırılarını önler.
Bir mesajın gizli anahtarı elinde tutan birinden geldiğini ve yolda değiştirilmediğini kanıtlar. Tipik kullanımlar: webhook yüklerini doğrulamak (Stripe, GitHub, Shopify), API isteklerini imzalamak ve URL'leri veya çerezleri kurcalamaya karşı korumak.
Hayır. Anahtar ve mesaj, tarayıcınızın WebCrypto API'si tarafından %100 yerel olarak işlenir — hiçbir şey hiçbir yere iletilmez, günlüğe kaydedilmez veya saklanmaz.
Neredeyse her zaman bir kodlama farkı: sondaki bir satır sonu, yeniden serileştirilmiş bir JSON gövdesi, UTF-8 yerine başka bir kodlama veya onaltılık çıktının Base64 ile karşılaştırılması. Aynı anahtarla tam olarak aynı baytları imzalayın, imzalar eşleşecektir.
İkisi de güvenli kabul edilir. HMAC-SHA-256 sektör varsayılanıdır ve çoğu webhook sağlayıcısının kullandığı budur; karşı taraf 128 karakterlik bir imza bekliyorsa HMAC-SHA-512'yi seçin.
Hayır. HMAC bir mesajı doğrular ama gizlemez — içeriği herkes okuyabilir. Gizlilik için şifreleme, bütünlük ve özgünlük için HMAC (ya da kimlik doğrulamalı şifrelemede olduğu gibi ikisini birden) kullanın.
Vai.la, herhangi bir URL'yi tıklama istatistikleri, QR Code ve kendi biolink'inizle birlikte kısa bir bağlantıya dönüştürür.
Vai.la, araçların nasıl kullanıldığından veya sonuçlarına dayanarak alınan kararlardan sorumlu değildir.