Was ist URL-Fragment?
Ein URL-Fragment ist der Teil einer URL, der nach dem Raute-Symbol (#) erscheint. Gemäß RFC 3986 verarbeiten Browser Fragmente ausschließlich clientseitig und schließen sie nie in HTTP-Anfragen an den Server ein.
URLs haben eine definierte Struktur: Schema, Authority, Pfad, Query-String und Fragment. Das Fragment (alles nach dem #) war ursprünglich für die Navigation zu einem bestimmten Abschnitt innerhalb einer Seite gedacht. Seine wichtigste Eigenschaft aus Sicherheitsperspektive ist jedoch, dass Browser durch die HTTP-Spezifikation explizit angewiesen sind, das Fragment nie an den Server zu senden.
Wenn du eine URL wie example.com/page#section besuchst, sendet der Browser eine Anfrage für example.com/page – der #section-Teil wird vor der Anfrage entfernt. Das Fragment verbleibt in der Adressleiste des Browsers und ist für JavaScript zugänglich, das auf der Seite läuft – aber der Server hat keinerlei Kenntnis davon. Dieses Verhalten ist durch die HTTP-Spezifikation vorgegeben und gilt einheitlich für alle modernen Browser.
Diese Eigenschaft macht URL-Fragmente besonders nützlich für die Übertragung sensibler Daten in Webanwendungen. Wenn Verschlüsselungsschlüssel oder andere Geheimnisse ins Fragment gesetzt werden, sind sie dem clientseitigen JavaScript zugänglich, das sie zur Entschlüsselung benötigt – werden aber nie an den Server übermittelt, von Proxys protokolliert oder in Server-Access-Logs erfasst.
See the fragment vanish in transit
Edit the part after # and watch the server log update. The fragment never appears in the HTTP request line.
https://www.vaulted.fyi/s/aBc123#b9pK4mNxQ_2L7eRfA3vTcU1xY8zB6jH9wM0nP5qS4iE
GET /s/aBc123 HTTP/1.1 Host: www.vaulted.fyi User-Agent: Mozilla/5.0 ...
Per RFC 3986 §3.5, browsers strip everything after # before issuing the HTTP request. The fragment stays in the address bar, accessible only to JavaScript on the loaded page — never logged, never proxied, never cached by the server.
Wie Vaulted URL-Fragment verwendet
Vaulted platziert den AES-256-GCM-Verschlüsselungsschlüssel direkt ins URL-Fragment. Wenn du ein Geheimnis erstellst, hat der generierte Link das Format /s/{id}#{base64url(key)}. Da Browser das Fragment nie in HTTP-Anfragen mitschicken, erreicht der Verschlüsselungsschlüssel Vaulteds Server nie. Der Browser des Empfängers extrahiert den Schlüssel aus dem Fragment, ruft die verschlüsselten Daten vom Server ab und führt die Entschlüsselung lokal durch. Diese eine Architekturentscheidung macht Vaulted zu einem echten Zero-Knowledge-System.