Qu'est-ce que Fragment d’URL ?
Un fragment d’URL est la partie d’une URL qui apparaît après le symbole dièse (#). Conformément au RFC 3986, les navigateurs traitent les fragments exclusivement côté client et ne les incluent jamais dans les requêtes HTTP adressées au serveur.
Les URL ont une structure définie : schéma, autorité, chemin, chaîne de requête et fragment. Le fragment (tout ce qui suit le #) était initialement destiné à naviguer vers une section précise d’une page. Mais sa propriété la plus importante du point de vue de la sécurité est que les navigateurs sont explicitement tenus, par la spécification HTTP, de ne jamais envoyer le fragment au serveur.
Quand tu visites une URL comme example.com/page#section, le navigateur envoie une requête pour example.com/page : la partie #section est retirée avant la requête. Le fragment reste dans la barre d’adresse du navigateur et est accessible au JavaScript qui s’exécute sur la page, mais le serveur n’en a aucune connaissance. Ce comportement est imposé par la spécification HTTP et s’applique uniformément à tous les navigateurs modernes.
Cette propriété rend les fragments d’URL particulièrement utiles pour transmettre des données sensibles dans les applications web. Quand des clés de chiffrement ou d’autres secrets sont placés dans le fragment, ils sont accessibles au JavaScript côté client qui en a besoin pour le déchiffrement, mais ne sont jamais transmis au serveur, journalisés par les proxys ni enregistrés dans les journaux d’accès du serveur.
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.
Comment Vaulted utilise Fragment d’URL
Vaulted place la clé de chiffrement AES-256-GCM directement dans le fragment d’URL. Quand tu crées un secret, le lien généré a le format /s/{id}#{base64url(key)}. Comme les navigateurs n’incluent jamais le fragment dans les requêtes HTTP, la clé de chiffrement n’atteint jamais le serveur de Vaulted. Le navigateur du destinataire extrait la clé du fragment, récupère les données chiffrées sur le serveur et effectue le déchiffrement localement. Cette seule décision d’architecture fait de Vaulted un véritable système zero-knowledge.