HMAC és kivonatolás API-aláírásokhoz: webhookok védelme
Amikor egy harmadik féltől származó szolgáltatás adatokat küld Önnek webhookon keresztül, vagy ha hitelesítenie kell egy API-kérést, akkor szüksége van egy módra annak bizonyítására, hogy az üzenetet nem manipulálták, és valóban attól származik, aki azt mondja, hogy igen. A hashelés önmagában ezt nem oldja meg; HMAC kell. A sima hash és a HMAC közötti különbség megértése, valamint az aláírások helyes ellenőrzése az a különbség a biztonságos és a veszélyeztetett integráció között.
Mi az a hash
A hash egy egyirányú függvény, amely bármilyen bevitelt – szöveget, fájlt, API-választ – rögzített hosszúságú karakterláncokká alakít. Ugyanaz a bemenet mindig ugyanazt a kimenetet állítja elő. A gyakori kivonatolási algoritmusok közé tartozik az SHA-256, az SHA-1 és az MD5. Használhatja a hash generátor hogy ezt működés közben lássuk: a „hello” mindig ugyanaz az SHA-256 hash lesz. A legfontosabb tulajdonság az, hogy a hash determinisztikus, de lehetetlen visszafordítani; nem tudja visszaállítani az eredeti bemenetet a hashből.
Mi az a HMAC
A HMAC a hash-alapú üzenet-hitelesítési kód rövidítése. A sima hash-től eltérően a HMAC a kivonatolás előtt az üzenetet titkos kulccsal kombinálja. A webhook-szolgáltató rendelkezik titkos kulccsal, kivonatolja az üzenetet ezzel a kulccsal, és elküldi Önnek az üzenetet és a hash-t. A folyamatot ugyanazzal a titkos kulccsal ismételjük meg; ha a kiszámított hash megegyezik az elküldöttével, akkor tudja, hogy az üzenet hiteles és módosítatlan. A HMAC generátor eszköz segítségével tesztelheti ezt saját üzenetével és titkával.
A kritikus különbség: hash vs HMAC
Íme, miért számít ez:
- Sima hash: Bárki láthatja üzenetét, és újraszámolhatja a hash-t, hogy „érvényes”-t hamisítson. Nem bizonyít semmit.
- HMAC: Csak valaki a titkos kulccsal tudja előállítani a megfelelő HMAC-t. Ez kriptográfiailag bizonyítja, hogy az üzenet a kulcstartótól érkezett, és nem változtatták meg.
Ha egy szolgáltatás csak hash-t tartalmazó webhookot küld, a támadó elkaphatja, megváltoztathatja az adatokat, újraszámíthatja a hash-t, és Ön nem veszi észre. A HMAC és a megosztott titok használatával a támadó nem tud érvényes aláírást hamisítani a kulcs nélkül.
Webhook aláírások ellenőrzése a kódban
Amikor egy webhook érkezik, a szolgáltatás biztosítja az üzenet hasznos adatát és egy aláírási fejlécet (gyakran X-Signature vagy X-Webhook-Signature). A kódodnak:
- Kérje le titkos kulcsát a biztonságos konfigurációból (környezeti változók, titkos kezelő).
- Számítsa ki a nyers kéréstörzs HMAC-SHA256 értékét ezzel a kulccsal.
- Hasonlítsa össze a számított HMAC byte-on-byte az aláírás fejlécével (mindig használjon állandó idejű összehasonlítást az időzítési támadások elkerülése érdekében).
- Ha egyeznek, a webhook hiteles. Ha nem, utasítsa el.
A legtöbb webhook-szolgáltató dokumentálja a HMAC-algoritmusát és az aláíráshoz szükséges pontos formátumot – ez néha a nyers JSON törzs, néha a törzshöz fűzött időbélyeg. Pontosan kövesse a specifikációjukat.
HMAC vs JWT: hol illenek?
A JWT-ket (JSON Web Tokens) gyakran összekeverik a HMAC aláírásokkal. A JWT egy önálló token, amely három részből áll: egy fejlécből, egy hasznos terhelésből (követelések) és egy aláírásból. Az aláírás lehet HMAC-alapú vagy RSA-alapú. JWT dekóderek lehetővé teszi a tokenek ellenőrzését és ellenőrzését. Míg a HMAC-k egyetlen üzenetet ellenőriznek, a JWT-k olyan tokenek, amelyeket Ön tárol és küld el minden kéréssel vagy API-hívással. Webhookok és egyszeri üzenet-hitelesítés esetén a HMAC egyszerűbb és elegendő. A folyamatban lévő munkamenet tokenek vagy API hitelesítő adatok esetében a JWT gyakran rugalmasabb.
Adatvédelem: írja alá és ellenőrizze teljes egészében a böngészőben
A TextArray HMAC és hash eszközei teljes egészében a böngészőben futnak. Nincs üzenet, titkos vagy aláírás feltöltve a szerverre. Nincs szükség fiókra, és az eszközök offline módban működnek az oldal betöltése után. Biztonságosan beillesztheti a webhook hasznos adatokat és az API-kulcsokat az aláírások teszteléséhez és hibakereséséhez anélkül, hogy az adatokat harmadik félnek vagy naplózási szolgáltatásnak tenné ki. Ez különösen akkor hasznos, ha érzékeny API-kulcsokkal vagy ügyféladatokkal dolgozik a fejlesztés során.
Kezdő lépések
Kezdje a kivonatolás megértésével: használja a hash generátor hogy lássa, hogy ugyanaz a bemenet mindig ugyanazt az SHA-256 kimenetet állítja elő. Ezután lépjen ide HMAC generáció hogy megnézze, hogyan változtatja meg a titkos kulcs a kimenetet. Próbálja meg kissé megváltoztatni a kulcsot vagy az üzenetet; a HMAC teljesen átfordul, ellentétben a naiv ellenőrző összeggel. Miután megértette a mechanikát, alkalmazza azt a webhook-ellenőrzési logikára. Érzékeny rakományokhoz, mint pl titkosított szöveg vagy dekódolt tokenek, mindig párosítsa őket HMAC által aláírt kérésekkel az integritás és az eredet garantálása érdekében.