Protezione e ripristino dei caratteri HTML
Converte in entità HTML i caratteri speciali — e commerciale, minore, maggiore, virgolette doppie e semplici — oppure riporta le entità ai caratteri originari. Utile contro gli attacchi di scripting fra siti e nell'inserimento di testo in una pagina.
Le principali entità HTML con nome
| Carattere | Entità con nome | Riferimento numerico | Descrizione |
|---|---|---|---|
| & | & | & | E commerciale (il segno che vale «e») |
| < | < | < | Segno di minore (lo stesso che apre un marcatore HTML) |
| > | > | > | Segno di maggiore (lo stesso che chiude un marcatore HTML) |
| " | " | " | Virgolette doppie (delimitano i valori degli attributi) |
| ' | ' | ' | Virgoletta semplice (delimita i valori degli attributi) |
| |   | Spazio unificatore (non consente l'andata a capo) | |
| © | © | © | Segno del diritto d'autore |
| ® | ® | ® | Segno di marchio registrato |
| ™ | ™ | ™ | Segno di marchio |
| € | € | € | Simbolo dell'euro |
| ¥ | ¥ | ¥ | Simbolo dello yen |
| ¢ | ¢ | ¢ | Simbolo del centesimo |
Che cosa fa l’escape dell’HTML
L’escape dell’HTML converte i cinque caratteri che in HTML hanno un significato particolare – &, <, >, " e ' – in forme di entità che il browser non leggerà come marcatura. Inserire l’input dell’utente direttamente in una pagina senza questo passaggio può rompere l’impaginazione, perché < e > vengono scambiati per l’inizio e la fine di un tag, e può consentire l’esecuzione di codice dannoso come <script>: la vulnerabilità nota come cross-site scripting, o XSS. L’escape ne è la difesa elementare.
L’operazione inversa riporta le entità nominate come & e i riferimenti numerici come & ai caratteri che rappresentano. Serve quando ha copiato del codice HTML da altrove, oppure quando legge i dati dei messaggi di un CMS o di un forum e la forma a entità rende difficile vedere il testo reale. La conversione avviene interamente nel JavaScript del browser e ciò che digita non viene inviato da nessuna parte.
Come si converte il testo
- Scelga la direzione Selezioni «escape» per trasformare i caratteri in entità, oppure l’operazione inversa per riportare le entità a caratteri.
- Incolli il testo nel campo di inserimento Inserisca la stringa che vuole incorporare nell’HTML, oppure quella che contiene la notazione a entità.
- Verifichi il risultato convertito L’uscita sottostante si aggiorna in tempo reale mentre digita e viene ricalcolata a ogni modifica dell’ingresso.
- Copi il risultato Il pulsante di copia porta il testo convertito negli appunti, pronto per essere incollato nel corpo di un CMS o nel codice sorgente.
Consigli per sfruttarlo al meglio
- La protezione dei caratteri HTML è la difesa elementare contro gli attacchi di scripting fra siti: proteggete sempre quanto inserito dagli utenti prima di collocarlo in una pagina.
- La
&va protetta sempre per prima: convertendo prima gli altri caratteri, anche la&delle entità appena generate verrebbe protetta una seconda volta. - Inserendo un testo nel valore di un attributo conviene proteggere non soltanto le virgolette doppie ma anche quelle semplici.
- Lo strumento sa ripristinare i riferimenti numerici decimali, come
&, quelli esadecimali, come&, e le principali entità con nome, come&. - Molti motori di modelli proteggono automaticamente i caratteri quando espandono una variabile, ma se usate una sintassi di uscita HTML grezza dovete provvedere voi stessi.
Quando l’escape è utile
Citare codice in un CMS o in un post di blog
Incollare così com’è una stringa contenente < o > nel corpo di un articolo induce il browser a leggerla come tag e la resa si rovina. Applicare prima l’escape consente di mostrarla senza danni.
Leggere messaggi di un forum o di una sezione commenti
Quando i messaggi sono conservati in banca dati ancora in forma di entità, l’operazione inversa ripristina il testo originario e lo rende leggibile.
Incorporare frammenti HTML dentro Markdown
Per mostrare tag di esempio o codice all’interno di un documento Markdown, applicarvi prima l’escape impedisce che l’analizzatore Markdown e il browser li interpretino come marcatura.
Verificare un modello HTML
Utile per confrontare prima e dopo quando cerca dove un motore di template abbia applicato l’escape per errore, o non l’abbia applicato affatto.
Termini sull’escape dell’HTML
- Entità HTML (riferimento a carattere)
- Notazione per mostrare in sicurezza un carattere dotato di significato particolare all’interno di un documento HTML. La forma nominata inizia con la e commerciale e termina con il punto e virgola, come
&. - Riferimento numerico a carattere
- Notazione che indica un carattere tramite il suo punto di codice Unicode. In decimale si scrive
&, in esadecimale&: entrambe indicano lo stesso carattere. - Cross-site scripting (XSS)
- Vulnerabilità per cui uno script contenuto nell’input dell’utente finisce senza escape in una pagina ed esegue codice non previsto nel browser di altri visitatori. L’escape dell’HTML ne è la difesa classica.
- Sanificazione
- Pratica generale che consiste nel togliere gli elementi pericolosi dai dati ricevuti dall’esterno o nel convertirli in una forma innocua. L’escape dell’HTML ne è una modalità.
- Applicare l’escape prima alla e commerciale
- La e commerciale va convertita prima di ogni altro carattere. Convertendo prima gli altri, le e commerciali delle entità appena prodotte, come
&, verrebbero sottoposte a escape una seconda volta: ecco perché l’ordine conta. - Delimitatori del valore di attributo
- Le virgolette doppie e semplici che racchiudono il valore di un attributo in un tag HTML. Se uno di questi caratteri compare nel valore senza escape, viene scambiato per la fine dell’attributo.
Domande frequenti
&, <, >, " e '. Le faccine e i caratteri non ASCII si visualizzano in sicurezza così come sono negli ambienti UTF-8 di oggi e non richiedono alcuna conversione.
A proposito — i riferimenti ai caratteri, un'eredità di SGML
Le entità HTML, ossia i riferimenti ai caratteri, risalgono a SGML, il linguaggio di marcatura generalizzato da cui l'HTML discende. Standardizzato nel 1986, SGML possedeva già il meccanismo dei riferimenti ai caratteri per usare nel testo il segno di minore, che delimita i marcatori. L'HTML lo ha ereditato quasi immutato e già nelle prime specifiche degli anni Novanta definiva le entità fondamentali <, > e &.
Le entità con nome furono in origine preziose per mostrare anche in ambienti ASCII i simboli tipografici — il segno del diritto d'autore, quello di marchio registrato, le lettere greche — in un'epoca in cui Unicode non era ancora diffuso. La specifica di HTML5 ne definisce infine oltre duemila, comprendendo simboli minori come i segni di spunta e le note musicali.
Oggi, con la diffusione della codifica UTF-8, il bisogno di riferimenti ai caratteri per evitare le corruzioni è molto diminuito. Restano però tre caratteri da proteggere sempre, per un motivo diverso: il minore, il maggiore e la e commerciale hanno per l'analizzatore HTML un significato sintattico particolare — apertura e chiusura di marcatore, inizio di entità — e trascurarne la protezione porta dritti a impaginazioni sfasciate e a vulnerabilità di scripting fra siti.