Artikel
Kod og afkod data privat
Udviklere indsætter hver dag tokens, nyttelaster og loginoplysninger på sider til kodning og afkodning. De mest praktiske kører på en server, hvilket betyder, at dine data forlader enheden til en opgave, der aldrig krævede det. Disse fire værktøjer kører helt i browseren, så data bliver hos dig.
Base64: det ser rodet ud, men er ikke hemmeligt
Base64 er en kodning, ikke kryptering. Den laver binære data om til tekst, der kan overleve en kopiering og indsættelse eller transport gennem systemer, der kun håndterer simple tegn. Enhver, der ser Base64-strengen, kan afkode den tilbage til originalen i ét enkelt trin, så en streng, der indeholder en API-nøgle, et privat certifikat eller indholdet af en e-mail, er fuldt læsbar for den, der har den. Risikoen er, at den værdi ofte gemmer sig i konfigurationsfiler, data-URL'er eller godkendelseshoveder og ser uforståelig ud, hvilket frister til at indsætte den i den første afkoder, man finder online. Den afkoder modtager den rå hemmelighed. Et værktøj, der afkoder Base64 lokalt, viser dig de oprindelige byte, uden at værdien nogensinde når en server.

URL-kodning: forespørgselsstrenge bærer mere, end du tror
Procentkodning lader dig sikkert placere mellemrum, accenter og reserverede tegn i en URL. Teksten, du koder eller afkoder, er ofte en rigtig forespørgselsstreng fra en applikation, og de bærer sessions-id'er, søgeord, e-mailadresser, omdirigeringsmål og nogle gange signerede parametre. At indsætte en fuldstændig URL i en fjernkoder overdrager alt dette til en tredjepart på én gang, og forespørgselsstrenge er netop den slags værdi, der ender i serverlogfiler. At kode og afkode i browseren betyder, at URL'en behandles i hukommelsen på din egen enhed og aldrig sendes, mens du arbejder med den.
JWT: nyttelasten er signeret, ikke skjult
En JSON Web Token består af tre Base64url-sektioner samlet med punktummer: et hoved, en nyttelast og en signatur. Signaturen beviser, at tokenet ikke er pillet ved, men gør intet for at skjule nyttelasten, som afkodes til læsbar JSON med bruger-id'er, roller, udløbstider og alle brugerdefinerede krav, udstederen tilføjede. Et gyldigt token er også en levende loginoplysning: indtil det udløber, kan enhver, der har det, handle som brugeren. At indsætte et fungerende token i en afkoder online sender en aktiv loginoplysning til en server, du ikke kontrollerer. En afkoder, der fortolker tokenet i din browser, afslører det samme hoved og den samme nyttelast, uden at tokenet nogensinde forlader siden.

Hashing: inputtet betyder mere end sammendraget
En hashfunktion laver ethvert input om til et sammendrag af fast længde, og du kan ikke vende sammendraget tilbage til inputtet. Den egenskab gør hashing nyttig til at verificere en fils integritet eller sammenligne værdier uden at gemme originalen. Hagen er på inputsiden: for at beregne hashen af en adgangskode, et dokument eller en konfigurationshemmelighed skal du give værktøjet den virkelige værdi. Hvis det værktøj kører på en server, rejser det følsomme input derhen, selvom kun det harmløse sammendrag returneres. At beregne hashen lokalt holder inputtet på din enhed, så du får det sammendrag, du har brug for, uden at blotte det, du hashede.
Base64-kodning: byte-mapping og padding
Base64 oversætter 8-bit bytes til 6-bit tegn ved at gruppere tre inputbytes (24 bit) til fire 6-bit værdier. Hver 6-bit værdi afbildes til et tegn i Base64-alfabetet (A-Z, a-z, 0-9, +, /). Da processen kræver input, der er deleligt med 24 bit, udfyldes korte input med padding: én tilbageværende byte giver to padding-tegn (==), to tilbageværende bytes giver ét (=). Base64url-varianten, som bruges i JSON Web Tokens (JWTs), erstatter + med - og / med _ for at gøre strengen URL-sikker og udelader =-padding helt, da padding-tegn kan forårsage fejl i strenge URI-parsere. Det er nyttigt at kende denne forskel ved fejlsøgning af token-håndtering: et JWT, der ser malformed ud, er måske blot Base64url-kodet frem for standard Base64.
JWT-signaturer: HS256, RS256 og algoritmeforveksling
Et JSON Web Tokens sikkerhed afhænger fuldstændigt af signaturen, det tredje punktum-adskilte segment. Med HS256 (HMAC-SHA256) signerer serveren den Base64url-kodede header og payload med en hemmelig nøgle. SHA-256-hashfunktionen giver kollisionsmodstandsdygtighed: det er beregningsmæssigt umuligt at producere et modificeret payload, der hasher til den samme signatur uden at kende den hemmelige nøgle. Med RS256 signerer serveren med en RSA-privat nøgle og verificerer med en offentlig nøgle. En kendt sårbarhed kaldet algoritmeforveksling opstår, når et serverbibliotek ikke strengt håndhæver den forventede algoritme-type. En angriber kan ændre token-headerens alg-felt fra RS256 til HS256 og signere tokenet med serverens offentlige nøgle som HMAC-hemmelighed, da offentlige nøgler ofte er tilgængelige. Afkodning af JWT-headeren lokalt i browseren lader dig verificere, hvilken algoritme der faktisk er angivet, uden at eksponere det aktive token for tredjeparts-logningssystemer.
Værktøjer i denne artikel
- Base64-koder / dekoderKodér eller afkodé Base64, tekst og filer. Ingen upload, 100% lokalt.
- URL-koder / dekoderProcentkodé eller afkodé URL-strenge. Ingen upload, 100% lokalt.
- JWT-dekoderAfkodé et JWT (header, payload, udløb) uden at sende det nogen steder. Ingen signaturverifikation.
- Hash-generatorGenerér MD5-, SHA-1-, SHA-256- og SHA-512-hashes fra tekst eller filer. Ingen upload.
Ofte stillede spørgsmål
Er Base64 eller URL-kodning en form for sikkerhed?
Nej. Begge er reversible kodninger lavet til sikker transport af data, ikke til at beskytte dem. Enhver, der kan læse den kodede streng, afkoder den med det samme, uden nøgle eller adgangskode. Skal du holde en værdi fortrolig, så krypter den med en passende algoritme og håndter nøglen separat. Behandl enhver værdi i Base64 eller procentkodning, som om den stod i klartekst.
Hvorfor betyder det noget, hvor jeg afkoder et token eller hasher en adgangskode?
Fordi inputtet er den følsomme del. Et gyldigt JWT er en levende loginoplysning, og adgangskoden, du hasher, er den rigtige hemmelighed. Et serverbaseret værktøj modtager det rå input, allerede før det returnerer et resultat, hvilket betyder, at en kopi kan logges eller opbevares et sted, du ikke ser. Et værktøj, der kører i din browser, udfører den samme handling i hukommelsen på din egen enhed, så tokenet eller adgangskoden sendes aldrig nogen steder hen.