Base64 ger ingen sekretess. Alla som tar emot det kodade värdet kan återställa dess bytes utan lösenord eller nyckel. Att gömma inloggningsuppgifter i en lång sträng ändrar deras utseende, inte vem som kan läsa dem. Tillämpa samma hanteringsregler för kodade hemligheter som för originalen.
Kodning, kryptering och signaturer svarar på olika frågor
Kodning frågar hur bytes kan färdas genom ett textorienterat system. Kryptering skyddar konfidentialitet under en kryptografisk nyckel. En autentiseringsetikett eller digital signatur kan fastställa att data har producerats av en auktoriserad part och inte har ändrats, förutsatt att verifieringsprocessen och nycklarna är korrekta. En vanlig kontrollsumma hjälper främst att upptäcka oavsiktlig korruption. Ingen av dessa garantier följer enbart av Base64.
En avkodad JWT är ett användbart exempel. Dess rubrik och nyttolast är läsbara strukturer, men att läsa dem verifierar inte signaturen, utfärdaren, publiken eller utgångspolicyn. Behandla ett overifierat anspråk som otillförlitlig input. Låt inte en tittares formaterade JSON bli ett auktoriseringsbeslut.
Håll avkodat innehåll inert
En nyttolast kan avkoda till HTML, JavaScript, en SVG som innehåller aktivt innehåll eller ett felaktigt dokument. Visa text med textContent, inte innerHTML. Kör inte avkodad kod eller infoga en godtycklig SVG på din sida. En deklarerad datatyp URI MIME tillhandahålls av avsändaren och kan vara falsk. Filsignaturer hjälper till att identifiera ett troligt format, men en matchande rubrik bekräftar inte att en fil är komplett eller säker.
// decodedText comes from an untrusted payload.
const output = document.createElement('pre');
output.textContent = decodedText;
document.body.append(output); // displays markup as text
Ställ in gränser innan du tilldelar minne
Kodad text expanderar data, och en webbläsare kan hålla inmatningssträngen, avkodade bytes och förhandsgranskningen samtidigt. Genomför gränser före avkodning, begränsa accepterade dokumenttyper och låt användare avbryta långa operationer. Felaktig ingång bör ge ett separat feltillstånd istället för en utdata som kan kopieras som om det vore framgångsrika data.
För känsligt arbete, inspektera verktygets nätverksbeteende och lagringspolicy. Webbläsarbearbetning och server API bearbetning har olika gränser. Undvik att placera tokens i webbadresser till sidan, där de kan ange webbläsarhistorik, skärmdumpar eller åtkomstloggar. När du testar, använd syntetiska data med samma struktur. RFC 4648 diskuterar kodningstvetydigheter; säkerheten för ett större protokoll beror fortfarande på dess kompletta design.