Artikel
Koda och avkoda data privat
Utvecklare klistrar varje dag in tokens, nyttolaster och inloggningsuppgifter i sidor för kodning och avkodning. De smidigaste körs på en server, vilket betyder att dina data lämnar enheten för en uppgift som aldrig krävde det. Dessa fyra verktyg körs helt i webbläsaren, så data stannar hos dig.
Base64: det ser rörigt ut, men är inte hemligt
Base64 är en kodning, inte kryptering. Den gör om binära data till text som klarar en kopiering och inklistring eller transport genom system som bara hanterar enkla tecken. Den som ser Base64-strängen kan avkoda den tillbaka till originalet i ett enda steg, så en sträng som innehåller en API-nyckel, ett privat certifikat eller innehållet i ett e-postmeddelande är fullt läsbar för den som har den. Risken är att det värdet ofta gömmer sig i konfigurationsfiler, data-URL:er eller autentiseringshuvuden och ser obegripligt ut, vilket frestar till att klistra in det i den första avkodaren man hittar på nätet. Den avkodaren tar emot den råa hemligheten. Ett verktyg som avkodar Base64 lokalt visar dig originalbyten utan att värdet någonsin når en server.

URL-kodning: frågesträngar bär mer än du tror
Procentkodning låter dig säkert lägga mellanslag, accenter och reserverade tecken i en URL. Texten du kodar eller avkodar är ofta en riktig frågesträng från en applikation, och de bär sessions-ID:n, sökord, e-postadresser, omdirigeringsmål och ibland signerade parametrar. Att klistra in en fullständig URL i en fjärrkodare överlämnar allt detta till en tredje part på en gång, och frågesträngar är just den sorts värde som hamnar i serverloggar. Att koda och avkoda i webbläsaren betyder att URL:en bearbetas i minnet på din egen enhet och aldrig överförs medan du arbetar med den.
JWT: nyttolasten är signerad, inte dold
En JSON Web Token består av tre Base64url-sektioner sammanfogade med punkter: ett huvud, en nyttolast och en signatur. Signaturen bevisar att token inte har manipulerats, men gör ingenting för att dölja nyttolasten, som avkodas till läsbar JSON med användar-ID:n, roller, utgångstider och alla anpassade anspråk som utfärdaren lade till. En giltig token är dessutom en levande inloggningsuppgift: tills den löper ut kan vem som helst som har den agera som användaren. Att klistra in en fungerande token i en avkodare på nätet skickar en aktiv inloggningsuppgift till en server du inte kontrollerar. En avkodare som tolkar token i din webbläsare avslöjar samma huvud och nyttolast utan att den token någonsin lämnar sidan.

Hashning: indata betyder mer än sammandraget
En hashfunktion gör om vilken indata som helst till ett sammandrag av fast längd, och du kan inte vända sammandraget tillbaka till indata. Den egenskapen gör hashning användbar för att verifiera en fils integritet eller jämföra värden utan att lagra originalet. Haken finns på indatasidan: för att beräkna hashen av ett lösenord, ett dokument eller en konfigurationshemlighet måste du ge verktyget det verkliga värdet. Om verktyget körs på en server reser den känsliga indatan dit även om bara det ofarliga sammandraget returneras. Att beräkna hashen lokalt håller indatan på din enhet, så du får sammandraget du behöver utan att blotta det du hashade.
Base64-kodning: byte-mappning och utfyllnad
Base64 omvandlar 8-bitars byte till 6-bitars tecken genom att gruppera tre inmatningsbyte (24 bitar) i fyra 6-bitarsvärden. Varje 6-bitarsvärde mappas till ett tecken i Base64-alfabetet (A-Z, a-z, 0-9, +, /). Eftersom processen kräver indata delbara med 24 bitar fylls korta indata med utfyllnad: en återstående byte ger två utfyllnadstecken (==), två återstående byte ger ett (=). Varianten Base64url, som används i JSON Web Tokens (JWTs), ersätter + med - och / med _ för att göra strängen URL-säker, och tar bort =-utfyllnaden helt eftersom utfyllnadstecken kan orsaka fel i strikta URI-parsers. Att känna igen denna skillnad är viktigt vid felsökning av tokenhantering: en JWT som ser felaktig ut kan helt enkelt vara Base64url-kodad i stället för standard Base64.
JWT-signaturer: HS256, RS256 och algoritmförvirring
Säkerheten i ett JSON Web Token beror helt på dess signatur, det tredje punkt-separerade segmentet. Med HS256 (HMAC-SHA256) signerar servern det Base64url-kodade huvudet och nyttolasten med en hemlig nyckel. SHA-256-hashfunktionen ger kollisionsresistans: det är beräkningsmässigt omöjligt att ta fram en modifierad nyttolast som hashas till samma signatur utan att känna till den hemliga nyckeln. Med RS256 signerar servern med en RSA-privat nyckel och verifierar med en offentlig nyckel. En känd sårbarhet kallad algoritmförvirring uppstår när ett serverbibliotek inte strikt genomdriver den förväntade algoritmtypen. En angripare kan ändra tokens headers alg-fält från RS256 till HS256 och signera token med serverns publika nyckel som HMAC-hemlighet, eftersom publika nycklar ofta är tillgängliga. Att avkoda JWT-huvudet lokalt i webbläsaren låter dig verifiera vilken algoritm som faktiskt anges, utan att exponera den aktiva token för loggningssystem från tredje part.
Verktyg i den här artikeln
- Base64 kodare / avkodareKoda eller avkoda Base64, text och filer. Ingen uppladdning, 100% lokalt.
- URL-kodare / avkodareProcentkoda eller avkoda URL-strängar. Ingen uppladdning, 100% lokalt.
- JWT-avkodareAvkoda en JWT (huvud, nyttolast, utgångsdatum) utan att skicka den någonstans. Ingen signaturverifiering.
- HashgeneratorGenerera MD5, SHA-1, SHA-256, SHA-512 hashvärden från text eller filer. Ingen uppladdning.
Vanliga frågor
Är Base64 eller URL-kodning en form av säkerhet?
Nej. Båda är reversibla kodningar gjorda för säker transport av data, inte för att skydda dem. Den som kan läsa den kodade strängen avkodar den direkt, utan nyckel eller lösenord. Behöver du hålla ett värde konfidentiellt, kryptera det med en lämplig algoritm och hantera nyckeln separat. Behandla varje värde i Base64 eller procentkodning som om det stod i klartext.
Varför spelar det roll var jag avkodar en token eller hashar ett lösenord?
För att indatan är den känsliga delen. En giltig JWT är en levande inloggningsuppgift, och lösenordet du hashar är den verkliga hemligheten. Ett serverbaserat verktyg tar emot den råa indatan redan innan det returnerar ett resultat, vilket betyder att en kopia kan loggas eller behållas någonstans du inte ser. Ett verktyg som körs i din webbläsare utför samma operation i minnet på din egen enhet, så token eller lösenord skickas aldrig någonstans.