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»)
< &lt; &#60; Segno di minore (lo stesso che apre un marcatore HTML)
> &gt; &#62; Segno di maggiore (lo stesso che chiude un marcatore HTML)
" &quot; &#34; Virgolette doppie (delimitano i valori degli attributi)
' &apos; &#39; Virgoletta semplice (delimita i valori degli attributi)
  &nbsp; &#160; Spazio unificatore (non consente l'andata a capo)
© &copy; &#169; Segno del diritto d'autore
® &reg; &#174; Segno di marchio registrato
&trade; &#8482; Segno di marchio
&euro; &#8364; Simbolo dell'euro
¥ &yen; &#165; Simbolo dello yen
¢ &cent; &#162; 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 &amp; e i riferimenti numerici come &#38; 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

  1. Scelga la direzione Selezioni «escape» per trasformare i caratteri in entità, oppure l’operazione inversa per riportare le entità a caratteri.
  2. Incolli il testo nel campo di inserimento Inserisca la stringa che vuole incorporare nell’HTML, oppure quella che contiene la notazione a entità.
  3. Verifichi il risultato convertito L’uscita sottostante si aggiorna in tempo reale mentre digita e viene ricalcolata a ogni modifica dell’ingresso.
  4. 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 &#38;, quelli esadecimali, come &#x26;, e le principali entità con nome, come &amp;.
  • 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 &amp;.
Riferimento numerico a carattere
Notazione che indica un carattere tramite il suo punto di codice Unicode. In decimale si scrive &#38;, in esadecimale &#x26;: 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 &amp;, 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

Perché sono i tre caratteri che l'analizzatore HTML interpreta come parte della sintassi. Trascurandone la protezione, il navigatore li scambia per l'apertura o la chiusura di un marcatore, con possibili impaginazioni sfasciate e attacchi di scripting fra siti, cioè l'inserimento di codice malevolo.

La codifica degli indirizzi, detta anche codifica per cento, serve a rappresentare in sicurezza i caratteri speciali dentro un indirizzo, mentre la protezione HTML serve a evitare che un carattere sia scambiato per un marcatore in un documento. Gli scopi sono diversi: se il valore di un modulo finisce sia in un parametro d'indirizzo sia nella pagina, possono servire entrambe.

No. Tutta la conversione avviene nel JavaScript del navigatore e quanto inserite non giunge mai ai serventi di toolbase.cc.

No. Lo strumento protegge soltanto cinque caratteri: &, <, >, " 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.
Tool-kun

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 &lt;, &gt; e &amp;.

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.