Článek
Kódujte a dekódujte data soukromě
Vývojáři každý den vkládají tokeny, datové části a přihlašovací údaje na stránky pro kódování a dekódování. Ty nejpohodlnější běží na serveru, což znamená, že vaše data opouštějí zařízení kvůli úkolu, který to nikdy nevyžadoval. Tyto čtyři nástroje běží zcela v prohlížeči, takže data zůstávají u vás.
Base64: vypadá zamotaně, ale není tajné
Base64 je kódování, nikoli šifrování. Mění binární data na text, který přežije kopírování a vkládání nebo přenos systémy, jež zvládají jen jednoduché znaky. Kdokoli vidí řetězec Base64, dokáže jej v jediném kroku dekódovat zpět na originál, takže řetězec obsahující klíč API, soukromý certifikát nebo tělo e-mailu je plně čitelný pro toho, kdo jej drží. Riziko spočívá v tom, že se ta hodnota často skrývá v konfiguračních souborech, data URL či autentizačních hlavičkách a působí nečitelně, což svádí k vložení do prvního dekodéru nalezeného online. Ten dekodér obdrží surové tajemství. Nástroj, který dekóduje Base64 lokálně, vám ukáže původní bajty, aniž by hodnota kdy dorazila na server.

Kódování URL: dotazovací řetězce nesou víc, než si myslíte
Procentové kódování umožňuje bezpečně vložit do URL mezery, diakritiku a vyhrazené znaky. Text, který kódujete nebo dekódujete, bývá skutečný dotazovací řetězec z aplikace, a ty nesou identifikátory relace, hledané výrazy, e-mailové adresy, cíle přesměrování a někdy podepsané parametry. Vložení celé URL do vzdáleného kodéru předá tohle všechno třetí straně najednou, a dotazovací řetězce jsou přesně ten druh hodnoty, který končí v serverových logách. Kódovat a dekódovat v prohlížeči znamená, že URL se zpracovává v paměti na vašem vlastním zařízení a během práce se nikdy nepřenáší.
JWT: datová část je podepsaná, ne skrytá
JSON Web Token tvoří tři části Base64url spojené tečkami: hlavička, datová část a podpis. Podpis dokazuje, že token nebyl pozměněn, ale datovou část nijak neskrývá; ta se dekóduje na čitelný JSON s identifikátory uživatele, rolemi, časy vypršení a libovolnými vlastními tvrzeními, která vydavatel přidal. Platný token je zároveň živé pověření: dokud nevyprší, kdokoli ho má, může jednat jako uživatel. Vložení funkčního tokenu do online dekodéru pošle aktivní pověření na server, který neovládáte. Dekodér, který token analyzuje ve vašem prohlížeči, odhalí stejnou hlavičku a datovou část, aniž by token kdy opustil stránku.

Hashování: na vstupu záleží víc než na otisku
Hashovací funkce mění jakýkoli vstup na otisk pevné délky a otisk nelze obrátit zpět na vstup. Tato vlastnost činí hashování užitečným pro ověření integrity souboru nebo porovnání hodnot bez uložení originálu. Háček je na straně vstupu: pro výpočet otisku hesla, dokumentu nebo konfiguračního tajemství musíte nástroji předat skutečnou hodnotu. Pokud nástroj běží na serveru, citlivý vstup tam putuje, i když se vrací jen neškodný otisk. Výpočet otisku lokálně udrží vstup na vašem zařízení, takže získáte potřebný otisk, aniž byste vystavili to, co jste hashovali.
Kódování Base64: mapování bajtů a odsazení
Base64 překládá 8bitové bajty do 6bitových znaků tím, že seskupuje tři vstupní bajty (24 bitů) do čtyř 6bitových hodnot. Každá 6bitová hodnota se mapuje na znak v abecedě Base64 (A-Z, a-z, 0-9, +, /). Protože proces vyžaduje vstupy dělitelné 24 bity, krátké vstupy jsou odsazeny: jeden zbývající bajt produkuje dva odsazovací znaky (==), dva zbývající bajty produkují jeden (=). Varianta Base64url, používaná v JSON Web Tokenech (JWTs), nahrazuje + za - a / za _ aby byl řetězec bezpečný pro URL, a odsazení = zcela odstraňuje, protože odsazovací znaky mohou způsobovat chyby v přísných URI parserech. Rozlišování tohoto rozdílu je důležité při ladění zpracování tokenů: JWT, který vypadá jako poškozený, může být jednoduše kódován v Base64url místo standardního Base64.
JWT podpisy: HS256, RS256 a záměna algoritmů
Bezpečnost JSON Web Tokenu závisí zcela na jeho podpisu, třetím segmentu odděleném tečkou. U HS256 (HMAC-SHA256) server podepisuje záhlaví a payload kódované Base64url pomocí tajného klíče. Hašovací funkce SHA-256 poskytuje odolnost proti kolizím: je výpočetně neproveditelné vytvořit pozměněný payload, který se zahashuje na stejný podpis bez znalosti tajného klíče. U RS256 server podepisuje privátním klíčem RSA a ověřuje veřejným klíčem. Známá zranitelnost zvaná záměna algoritmů nastane, když serverová knihovna striktně nevynucuje očekávaný typ algoritmu. Útočník může změnit pole alg v záhlaví tokenu z RS256 na HS256 a token podepsat pomocí veřejného klíče serveru jako HMAC tajemství, protože veřejné klíče jsou často přístupné. Lokální dekódování záhlaví JWT v prohlížeči umožňuje ověřit, který algoritmus je skutečně specifikován, aniž by bylo nutné aktivní token vystavit systémům třetích stran pro logování.
Nástroje v tomto článku
- Base64 kodér / dekodérZakódujte nebo dekódujte Base64, text i soubory. Bez nahrávání, 100% lokálně.
- URL kodér / dekodérProcentně zakódujte nebo dekódujte URL řetězce. Bez nahrávání, 100% lokálně.
- JWT dekodérDekódujte JWT (hlavička, payload, expirace) bez odeslání kamkoli. Bez ověření podpisu.
- Generátor hashůVygenerujte hashe MD5, SHA-1, SHA-256, SHA-512 z textu nebo souboru. Bez nahrávání.
Časté dotazy
Je Base64 nebo kódování URL formou zabezpečení?
Ne. Obojí jsou vratná kódování navržená pro bezpečný přenos dat, ne pro jejich ochranu. Kdokoli, kdo přečte zakódovaný řetězec, jej okamžitě dekóduje, bez klíče či hesla. Pokud potřebujete hodnotu udržet v tajnosti, zašifrujte ji vhodným algoritmem a klíč spravujte odděleně. S každou hodnotou v Base64 nebo procentově kódovanou zacházejte, jako by byla napsaná prostým textem.
Proč záleží na tom, kde dekóduji token nebo hashuji heslo?
Protože citlivou částí je vstup. Platný JWT je živé pověření a heslo, které hashujete, je skutečné tajemství. Serverový nástroj obdrží surový vstup ještě dřív, než vrátí výsledek, což znamená, že kopie může být zaznamenána do logu nebo uchována na místě, které nevidíte. Nástroj běžící ve vašem prohlížeči provede stejnou operaci v paměti vašeho vlastního zařízení, takže token ani heslo se nikdy nikam neposílají.