Glossario

Cos'è Frammento URL?

Un frammento URL è la parte di un URL che appare dopo il simbolo cancelletto (#). In base all'RFC 3986, i browser elaborano i frammenti esclusivamente lato client e non li includono mai nelle richieste HTTP inviate al server.

Gli URL hanno una struttura definita: schema, authority, percorso, query string e frammento. Il frammento (tutto ciò che segue il #) era originariamente pensato per navigare verso una sezione specifica all'interno di una pagina. Tuttavia, la sua proprietà più importante dal punto di vista della sicurezza è che le specifiche HTTP richiedono esplicitamente ai browser di non inviare mai il frammento al server.

Quando visiti un URL come example.com/page#section, il browser invia una richiesta per example.com/page — la parte #section viene rimossa prima che la richiesta venga effettuata. Il frammento rimane nella barra degli indirizzi del browser ed è accessibile al JavaScript in esecuzione nella pagina, ma il server non ne è a conoscenza. Questo comportamento è imposto dalle specifiche HTTP ed è coerente in tutti i browser moderni.

Questa proprietà rende i frammenti URL particolarmente utili per trasmettere dati sensibili nelle applicazioni web. Se le chiavi di cifratura o altri segreti vengono inseriti nel frammento, sono disponibili al JavaScript lato client che ne ha bisogno per la decifratura, ma non vengono mai trasmessi al server, registrati dai proxy o rilevati nei log di accesso del server.

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.

What your browser sees
https://www.vaulted.fyi/s/aBc123#b9pK4mNxQ_2L7eRfA3vTcU1xY8zB6jH9wM0nP5qS4iE
What the server's access log records
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.

Come Vaulted usa Frammento URL

Vaulted inserisce la chiave di cifratura AES-256-GCM direttamente nel frammento URL. Quando crei un segreto, il link generato ha il formato /s/{id}#{base64url(key)}. Poiché i browser non inviano mai il frammento nelle richieste HTTP, la chiave di cifratura non raggiunge mai il server di Vaulted. Il browser del destinatario estrae la chiave dal frammento, recupera i dati cifrati dal server ed esegue la decifratura localmente. Questa singola scelta architetturale è ciò che rende Vaulted un vero sistema zero-knowledge.