Ingen upload, 100% lokalt, ingen konto

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.

Hello! kodet til SGVsbG8h og afkodet igen, hvilket viser at Base64 kan vendes tilbage af hvem som helst uden en nøgle.

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.

De tre dele af en JWT: læsbar header, læsbar payload, og en signatur der beviser integritet uden at skjule noget.

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

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.