Ugrás a tartalomhoz
TextArray

HMAC és kivonatolás API-aláírásokhoz: webhookok védelme

Blog /

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:

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:

  1. Kérje le titkos kulcsát a biztonságos konfigurációból (környezeti változók, titkos kezelő).
  2. Számítsa ki a nyers kéréstörzs HMAC-SHA256 értékét ezzel a kulccsal.
  3. 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).
  4. 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.