URL-Kodierung
URL-Kodierung stellt ein Byte in einer URI-Komponente durch ein Prozentzeichen und zwei Hexadezimalziffern dar.
Definition
URL-Kodierung, genauer Prozentkodierung, stellt ein Byte als % mit zwei Hexziffern dar. Ein Leerzeichen kann etwa %20 und das Prozentzeichen selbst %25 lauten.
Nicht reservierte URI-Zeichen—ASCII-Buchstaben, Ziffern, -, ., _ und ~—bleiben normalerweise unverändert. Andere Zeichen müssen je nach Position und Bedeutung kodiert werden.
Funktionsweise
Nicht-ASCII-Text wird zuerst, meist mit UTF-8, in Bytes umgewandelt; die nötigen Bytes werden einzeln prozentkodiert. So wird café in UTF-8 zu caf%C3%A9.
Reservierte Zeichen wie /, ?, #, & und = strukturieren eine URL. Ob sie zu kodieren sind, hängt von Pfadsegment, Abfrageparameter, Fragment oder anderer Komponente ab.
Leerzeichen und Formulardaten
Gewöhnliche Prozentkodierung schreibt ein Leerzeichen als %20. Das Format application/x-www-form-urlencoded nutzt in Abfragen und HTML-Formularen oft +; ein echtes Pluszeichen wird dann zu %2B.
Bibliotheken bieten meist eigene Funktionen für ganze URLs, Pfadsegmente und Parameterwerte. Die komponentengerechte Funktion behandelt Strukturtrennzeichen korrekt.
Sicherheit und Stolperfallen
Prozentkodierung ist umkehrbar und keine Verschlüsselung. Vertrauliche Werte können in Verlauf, Protokollen, Referrer-Daten und Serveraufzeichnungen sichtbar bleiben.
Erneutes Kodieren eines kodierten Prozentzeichens erzeugt Doppelkodierung: %20 wird %2520. Dekodierte Eingaben müssen weiterhin geprüft werden, da Kodierung schädliche Daten nicht sicher macht.
%20 ist das prozentkodierte Byte für ein Leerzeichen. + bedeutet nur in der Formularkodierung ein Leerzeichen; andernorts kann es ein echtes Plus sein.
Meist nicht. Pfadsegmente und Parameterwerte werden mit der jeweiligen Komponentenfunktion kodiert, damit Strukturtrennzeichen ihre Bedeutung behalten.
Nein. Sie sorgt für syntaktische Kompatibilität, aber nicht für Vertraulichkeit, Integrität oder Authentizität.