Artikkel
Kode og dekode data privat
Utviklere limer hver dag inn tokener, nyttelaster og legitimasjon i sider for koding og dekoding. De mest praktiske kjører på en server, noe som betyr at dataene dine forlater enheten for en oppgave som aldri krevde det. Disse fire verktøyene kjører helt i nettleseren, så dataene blir hos deg.
Base64: det ser rotete ut, men er ikke hemmelig
Base64 er en koding, ikke kryptering. Den gjør binære data om til tekst som tåler en kopier og lim inn eller transport gjennom systemer som bare håndterer enkle tegn. Den som ser Base64-strengen, kan dekode den tilbake til originalen i ett eneste trinn, så en streng som inneholder en API-nøkkel, et privat sertifikat eller innholdet i en e-post er fullt lesbar for den som har den. Risikoen er at den verdien ofte gjemmer seg i konfigurasjonsfiler, data-URL-er eller autentiseringshoder og ser uforståelig ut, noe som frister til å lime den inn i den første dekoderen man finner på nettet. Den dekoderen mottar den rå hemmeligheten. Et verktøy som dekoder Base64 lokalt, viser deg de opprinnelige bytene uten at verdien noen gang når en server.

URL-koding: spørrestrenger bærer mer enn du tror
Prosentkoding lar deg trygt sette mellomrom, aksenter og reserverte tegn inn i en URL. Teksten du koder eller dekoder, er ofte en ekte spørrestreng fra en applikasjon, og de bærer økt-IDer, søkeord, e-postadresser, omdirigeringsmål og noen ganger signerte parametre. Å lime inn en fullstendig URL i en fjernkoder overleverer alt dette til en tredjepart på én gang, og spørrestrenger er nettopp den typen verdi som havner i serverlogger. Å kode og dekode i nettleseren betyr at URL-en behandles i minnet på din egen enhet og aldri overføres mens du jobber med den.
JWT: nyttelasten er signert, ikke skjult
En JSON Web Token består av tre Base64url-seksjoner skjøtet sammen med punktum: et hode, en nyttelast og en signatur. Signaturen beviser at tokenet ikke er tuklet med, men gjør ingenting for å skjule nyttelasten, som dekodes til lesbar JSON med bruker-IDer, roller, utløpstider og alle egendefinerte påstander utstederen la til. Et gyldig token er også en levende legitimasjon: helt til det utløper, kan hvem som helst som har det, opptre som brukeren. Å lime inn et fungerende token i en dekoder på nettet sender en aktiv legitimasjon til en server du ikke kontrollerer. En dekoder som tolker tokenet i nettleseren din, avslører det samme hodet og nyttelasten uten at tokenet noen gang forlater siden.

Hashing: inndataene betyr mer enn sammendraget
En hashfunksjon gjør hvilken som helst inndata om til et sammendrag med fast lengde, og du kan ikke reversere sammendraget tilbake til inndataene. Den egenskapen gjør hashing nyttig for å verifisere integriteten til en fil eller sammenligne verdier uten å lagre originalen. Haken er på inndatasiden: for å beregne hashen av et passord, et dokument eller en konfigurasjonshemmelighet må du gi verktøyet den virkelige verdien. Hvis det verktøyet kjører på en server, reiser de sensitive inndataene dit selv om bare det ufarlige sammendraget returneres. Å beregne hashen lokalt holder inndataene på enheten din, så du får sammendraget du trenger uten å avsløre det du hashet.
Base64-koding: bytemapping og utfylling
Base64 oversetter 8-bits byte til 6-bits tegn ved å gruppere tre inndatabyte (24 bits) til fire 6-bits verdier. Hver 6-bits verdi tilordnes et tegn i Base64-alfabetet (A-Z, a-z, 0-9, +, /). Fordi prosessen krever inndata delbare med 24 bits, fylles korte inndata ut: én gjenværende byte gir to utfyllingstegn (==), to gjenværende byte gir ett (=). Base64url-varianten, brukt i JSON Web Tokens (JWTs), erstatter + med - og / med _ for å gjøre strengen URL-sikker, og fjerner = -utfyllingen helt, siden utfyllingstegn kan gi feil i strenge URI-parsere. Det er nyttig å kjenne til dette skillet når man feilsøker tokenhåndtering: en JWT som ser malformatert ut, kan rett og slett være Base64url-kodet heller enn standard Base64.
JWT-signaturer: HS256, RS256 og algoritmeforvirring
Sikkerheten til et JSON Web Token avhenger helt av signaturen, det tredje punktadskilte segmentet. Med HS256 (HMAC-SHA256) signerer serveren den Base64url-kodede hodet og nyttelasten ved hjelp av en hemmelig nøkkel. SHA-256-hashfunksjonen gir kollisjonsresistens: det er beregningmessig umulig å produsere en modifisert nyttelast som hasher til samme signatur uten å kjenne den hemmelige nøkkelen. Med RS256 signerer serveren med en RSA-privatnøkkel og verifiserer med en offentlig nøkkel. En kjent sårbarhet kalt algoritmeforvirring oppstår når et serverbibliotek ikke håndhever den forventede algoritmetypen strengt. En angriper kan endre tokenhodets alg-felt fra RS256 til HS256 og signere tokenet med serverens offentlige nøkkel som HMAC-hemmelighet, siden offentlige nøkler ofte er tilgjengelige. Å dekode JWT-hodet lokalt i nettleseren lar deg bekrefte hvilken algoritme som faktisk er angitt, uten å eksponere det aktive tokenet for tredjeparts loggesystemer.
Verktøy i denne artikkelen
- Base64 koder / dekoderKoder eller dekod Base64, tekst og filer. Ingen opplasting, 100% lokalt.
- URL-koder / dekoderProsentkoder eller dekod URL-strenger. Ingen opplasting, 100% lokalt.
- JWT-dekoderDekod et JWT (header, nyttelast, utløp) uten å sende det noen steder. Ingen signaturverifisering.
- Hash-generatorGenerer MD5, SHA-1, SHA-256, SHA-512 hash-verdier fra tekst eller filer. Ingen opplasting.
Ofte stilte spørsmål
Er Base64 eller URL-koding en form for sikkerhet?
Nei. Begge er reversible kodinger laget for sikker transport av data, ikke for å beskytte dem. Den som kan lese den kodede strengen, dekoder den umiddelbart, uten nøkkel eller passord. Må du holde en verdi konfidensiell, krypter den med en passende algoritme og forvalt nøkkelen separat. Behandle enhver verdi i Base64 eller prosentkoding som om den sto i klartekst.
Hvorfor spiller det noen rolle hvor jeg dekoder et token eller hasher et passord?
Fordi inndataene er den sensitive delen. Et gyldig JWT er en levende legitimasjon, og passordet du hasher, er den virkelige hemmeligheten. Et serverbasert verktøy mottar de rå inndataene før det i det hele tatt returnerer et resultat, noe som betyr at en kopi kan logges eller beholdes et sted du ikke ser. Et verktøy som kjører i nettleseren din, utfører den samme operasjonen i minnet på din egen enhet, så tokenet eller passordet sendes aldri noe sted.