Base64 biedt geen geheimhouding. Iedereen die de gecodeerde waarde ontvangt, kan de bytes ervan herstellen zonder wachtwoord of sleutel. Het verbergen van inloggegevens in een lange reeks verandert hun uiterlijk, niet wie ze kan lezen. Pas op gecodeerde geheimen dezelfde verwerkingsregels toe als op de originelen.
Codering, encryptie en handtekeningen beantwoorden verschillende vragen
Codering vraagt hoe bytes door een tekstgeoriënteerd systeem kunnen reizen. Encryptie beschermt de vertrouwelijkheid onder een cryptografische sleutel. Met een authenticatietag of digitale handtekening kan worden vastgesteld dat gegevens door een geautoriseerde partij zijn geproduceerd en niet zijn gewijzigd, op voorwaarde dat het verificatieproces en de sleutels correct zijn. Een eenvoudige controlesom helpt vooral bij het opsporen van onbedoelde corruptie. Geen van deze garanties volgt alleen uit Base64.
Een gedecodeerd JWT is een nuttig voorbeeld. De header en payload zijn leesbare structuren, maar het lezen ervan verifieert niet de handtekening, de uitgever, het publiek of het vervalbeleid. Behandel een niet-geverifieerde claim als niet-vertrouwde invoer. Zorg ervoor dat de opgemaakte JSON van een kijker geen autorisatiebeslissing wordt.
Houd gedecodeerde inhoud inert
Een payload kan worden gedecodeerd naar HTML, JavaScript, een SVG met actieve inhoud of een verkeerd opgemaakt document. Tekst weergeven met textContent, niet innerHTML. Voer geen gedecodeerde code uit en plaats geen willekeurige SVG in uw pagina. Een opgegeven gegevenstype URI MIME wordt door de afzender geleverd en kan onwaar zijn. Bestandshandtekeningen helpen bij het identificeren van een waarschijnlijk formaat, maar een overeenkomende header bewijst niet dat een bestand compleet of veilig is.
// decodedText comes from an untrusted payload.
const output = document.createElement('pre');
output.textContent = decodedText;
document.body.append(output); // displays markup as text
Stel limieten in voordat u geheugen toewijst
Gecodeerde tekst breidt de gegevens uit, en een browser kan de invoerreeks, gedecodeerde bytes en een voorbeeld tegelijkertijd vasthouden. Dwing limieten af vóór het decoderen, beperk geaccepteerde documenttypen en laat gebruikers lange bewerkingen annuleren. Verkeerd opgemaakte invoer zou een afzonderlijke foutstatus moeten opleveren in plaats van een uitvoer die kan worden gekopieerd alsof het succesvolle gegevens zijn.
Voor gevoelig werk controleert u het netwerkgedrag en het bewaarbeleid van de tool. Browserverwerking en server-API-verwerking hebben verschillende grenzen. Plaats geen tokens in pagina-URL's, waar ze de browsergeschiedenis, schermafbeeldingen of toegangslogboeken kunnen invoeren. Gebruik bij het testen synthetische gegevens met dezelfde structuur. RFC 4648 bespreekt coderingsambiguïteiten; de veiligheid van een groter protocol hangt nog steeds af van het volledige ontwerp ervan.