Attendi ...

L'encoding degli URL

Un generico indirizzo che appare nella barra del browser viene, con abuso di linguaggio, chiamato URL. Ad essere precisi, le specifiche standard distinguono tra URL (Uniform Resource Locator), URI (Uniform Resource Identifier) e URN (Uniform Resource Name). Un esempio dovrebbe chiarire la differenza tra queste sigle

https://www.aziendeitalia.com/pagina.html

in questo caso, esemplificando, possiamo pensare alla prima parte dell'indirizzo come l'URL (https://www.aziendeitalia.com), alla seconda parte come l'URN (pagina.html) e all'insieme delle due (l'intero indirizzo) come all'URI. Abbiamo detto “esemplificando” per evitare di entrare nei dettagli, altrimenti le differenze tra URI e URL diventerebbero piuttosto sfumate, rischiando di fare confusione. Per quello che ci interessa possiamo benissimo pensare all'URL come all'indirizzo comune di un gruppo di risorse, per certi versi analogo al concetto di cartella o directory, mentre l'URN assomiglia al concetto di nome di un file o di un documento. Ecco perché servono entrambi (URL e URN) per definire un URI, che può essere pensato come il percorso completo (cartella più nome del file) di una generica risorsa sul web.

L'esempio appena visto dovrebbe spiegare perché è diffusa la pratica di considerare sinonimi URI e URL: da un punto di vista pratico un URL è anche un URI, perché di fatto rappresenta il nome completo di una risorsa. Se scrivessimo infatti

https://www.aziendeitalia.com

potremmo pensare di avere scritto solamente un URL, e non un URI, perché manca il nome della pagina (cioè l'URN). In realtà, siccome l'indirizzo qui sopra identifica comunque una risorsa, che in questo caso è la pagina di benvenuto di AziendeItalia, è lecito parlare di URI.

Encoding degli indirizzi

Dopo aver chiarito le (sottili) differenze tra URL e URI, possiamo affrontare la questione che ci interessa: l'encoding degli indirizzi. Consideriamo gli indirizzi

http://prova.com/domanda/pagina?n=5

http://prova.com/?/pagina?n=5

il primo caso è semplice: si tratta di una richiesta HTTP GET inviata alla risorsa domanda/pagina, passando il parametro n, con valore 5. Nel secondo caso stiamo immaginando che l'ipotetico sviluppatore del sito prova.com abbia pensato di abbreviare l'indirizzo, usando il simbolo “?” al posto della stringa domanda.

Si tratta ovviamente di una pessima idea, ed il motivo dovrebbe essere chiaro: come può il server, al momento di ricezione della richiesta, capire che non stiamo passando un parametro di nome /pagina?n con valore 5? In altre parole, la seconda richiesta potrebbe essere interpretata come: “voglio invocare l'indirizzo http://prova.com/ passando il parametro /pagina?n, e assegnando il valore 5 a questo parametro.”

Per evitare ambiguità di questo tipo si è ricorsi all'encoding di alcuni caratteri riservati. Ciò significa che all'interno di un URL o di un URI non è possibile usare liberamente tutti i caratteri, ma dobbiamo ricordarci che alcuni caratteri hanno un significato speciale. Alcuni di questi caratteri sono

! * ' ( ) ; : @ & = + $ , / ? # [ ]

procedere con la codifica (encoding) di questi caratteri significa rappresentarli in modo alternativo, in questo caso usando il loro codice ASCII preceduto dal carattere % (percentuale). In questo modo l'indirizzo ambiguo scritto sopra potrebbe diventare

http://prova.com/?%2Fpagina%3Fn=5

questo perché, nella codifica convenzionalmente accettata degli URL, il carattere riservato / (slash) diventa %2F, mentre il carattere riservato ? (punto di domanda) diventa %3F.

Un'ottima domanda, a questo punto, potrebbe essere: quando dobbiamo utilizzare l'encoding di un URL o di un URI? La risposta è: quando vogliamo usare un carattere riservato per uno scopo particolare, attribuendogli un significato speciale. Questo è esattamente quello che abbiamo fatto sopra: siccome volevano usare i caratteri / e ? come parte del nome della risorsa (/pagina?n), abbiamo dovuto codificare i caratteri per evitare ambiguità.

Il problema inverso

L'encoding degli URL risolve i problemi di ambiguità, e ci permette di usare tutti i caratteri liberamente, anche quelli riservati, previa la loro codifica. Esiste però un possibile problema: in alcuni casi un indirizzo viene codificato per altri motivi (ad esempio per essere scritto in un database), e quando viene proposto come link potrebbe avere una forma del genere

http://prova.com/pagina.php%3Fn%3D5

se copiamo l'iindirizzo qui sopra nella barra del browser, probabilmente non raggiungeremo alcuna pagina. L'indirizzo corretto, in questo caso, potrebbe essere quello decodificato

http://prova.com/pagina.php?n=5

un modo semplice e veloce di decodificare l'indirizzo potrebbe essere quello di usare l'apposita funzione JavaScript, ovvero

unescape(“http://prova.com/pagina.php%3Fn%3D5”);

che fornisce come risultato

http://prova.com/pagina.php?n=5

Ovviamente JavaScript fornisce anche la funzone escape(), che permette di codificare una generica stringa. Ricordiamoci di queste due funzioni tutte le volte che dobbiamo maneggiare un URL o un URI, perché sono spesso il modo più semplice di gestire qualsiasi esigenza di codifica.

Pubblicato il Aggiornato il

Ti potrebbero interessare

WP2Shell: quando aggiornamenti, WAF e hardening non bastano

Aggiornamenti, WAF, backup e Disaster Recovery: tutti i livelli della resilienza WordPress

Una vulnerabilità critica nel core di WordPress ha riportato l'attenzione su un principio spesso trascurato: proteggere un sistema non significa poter garantire che non verrà mai compromesso.

La vulnerabilità nota come WP2Shell nasce dalla combinazione di due problemi di sicurezza, identificati come ...

21.07.2026
Dettagli

Hosting Condiviso VPS Cloud WordPress

Hosting condiviso, VPS o Cloud: quando WordPress deve crescere

Un sito WordPress può iniziare la propria attività su un normale piano di hosting condiviso e funzionare correttamente per molto tempo. Con l'aumento del traffico, dei contenuti, dei plugin o delle funzionalità, però, le esigenze tecniche possono cambiare.

Un sito aziendale che inizialmente pubblicava poche pagine può diventare un portale ricco di ...

13.07.2026
Dettagli

Come proteggere WordPress da attacchi automatici

Proteggere WordPress dagli attacchi automatici: perché è importante

WordPress è una delle piattaforme più utilizzate al mondo per realizzare siti web, blog aziendali ed eCommerce. Proprio per questa diffusione, è anche uno dei bersagli più frequenti di bot automatici, tentativi di login, scansioni alla ricerca di vulnerabilità, malware e attacchi contro plugin non aggiornati.

Molti attacchi non sono mirati ...

06.07.2026
Dettagli