Base64 gir ikke hemmelighold. Alle som mottar den kodede verdien kan gjenopprette bytene uten passord eller nøkkel. Å skjule legitimasjon i en lang streng endrer utseendet deres, ikke hvem som kan lese dem. Bruk de samme håndteringsreglene for kodede hemmeligheter som for originalene.
Koding, kryptering og signaturer svarer på ulike spørsmål
Koding spør hvordan byte kan reise gjennom et tekstorientert system. Kryptering beskytter konfidensialitet under en kryptografisk nøkkel. En autentiseringsbrikke eller digital signatur kan fastslå at data ble produsert av en autorisert part og ikke har blitt endret, forutsatt at verifiseringsprosessen og nøklene er korrekte. En vanlig sjekksum hjelper hovedsakelig med å oppdage utilsiktet korrupsjon. Ingen av disse garantiene følger av Base64 alene.
En dekodet JWT er et nyttig eksempel. Overskriften og nyttelasten er lesbare strukturer, men å lese dem bekrefter ikke signatur, utsteder, publikum eller utløpspolicy. Behandle et ubekreftet krav som uklarert innspill. Ikke la en seers formaterte JSON bli en autorisasjonsbeslutning.
Hold dekodet innhold inert
En nyttelast kan dekode til HTML, JavaScript, en SVG som inneholder aktivt innhold, eller et misformet dokument. Vis tekst med textContent, ikke innerHTML. Ikke kjør dekodet kode eller sett inn en vilkårlig SVG på siden din. En deklarert datatype URI MIME er levert av avsenderen og kan være falsk. Filsignaturer hjelper til med å identifisere et sannsynlig format, men en samsvarende overskrift fastslår ikke at en fil er fullstendig eller sikker.
// decodedText comes from an untrusted payload.
const output = document.createElement('pre');
output.textContent = decodedText;
document.body.append(output); // displays markup as text
Sett grenser før du tildeler minne
Kodet tekst utvider data, og en nettleser kan inneholde inndatastrengen, dekodede bytes og forhåndsvisningen samtidig. Håndhev grenser før dekoding, begrens aksepterte dokumenttyper, og la brukere kansellere lange operasjoner. Feilformat inndata skal produsere en egen feiltilstand i stedet for en utgang som kan kopieres som om det var vellykkede data.
For sensitivt arbeid, inspiser verktøyets nettverksatferd og oppbevaringspolicy. Nettleserbehandling og server API prosessering har forskjellige grenser. Unngå å legge tokens i sidens URL-er, der de kan legge inn nettleserhistorikk, skjermbilder eller tilgangslogger. Når du tester, bruk syntetiske data med samme struktur. RFC 4648 diskuterer kodingsuklarheter; sikkerheten til en større protokoll avhenger fortsatt av dens komplette design.