A cosa servono le entità HTML
HTML tratta alcuni caratteri come markup, non come testo letterale. La e commerciale avvia i riferimenti di carattere; le parentesi angolari aprono i tag; le virgolette delimitano gli attributi. Quando questi caratteri devono comparire come contenuto—post di blog, frammenti di documentazione, commenti utente—li si codifica come entità HTML (dette anche riferimenti di carattere). Il parser HTML del browser riconverte le entità nei caratteri previsti durante la costruzione del DOM.
Un’entità può essere nominata (&, <, ") o numerica (&, &). Le forme nominate sono più leggibili nel sorgente; quelle numeriche possono esprimere qualsiasi code point Unicode anche senza un nome noto. La codifica è una tecnica di sicurezza del markup e di interoperabilità. Non è cifratura e non sostituisce la codifica di output consapevole del contesto nei framework di sicurezza applicativa.
Codificate una frase di esempio con da testo a entità HTML, poi invertitela con da entità HTML a testo.
Come si relazionano i due sottoutil
- Da testo a entità HTML — converte i caratteri speciali in riferimenti di entità sicuri per HTML, adatti all’incorporamento nel markup.
- Da entità HTML a testo — espande i riferimenti di entità di nuovo in caratteri ordinari per lettura o ulteriore elaborazione.
Usate l’andata e ritorno quando preparate esempi per un tutorial, pulite contenuto CMS incollato o verificate che un passo di escape del template corrisponda a quanto atteso. Se la decodifica lascia entità intatte, possono essere malformate (& senza ;) o fuori dall’insieme riconosciuto dal decoder.
Riferimenti nominati versus numerici
Entità nominate. HTML definisce un ampio insieme di nomi ( , ©, €, …). Solo un piccolo nucleo è necessario per l’escape di base del testo in HTML: &, <, > e spesso " / ' a seconda del contesto dell’attributo.
Numerico decimale. © è il segno di copyright. Il numero è un code point Unicode.
Numerico esadecimale. © è lo stesso segno di copyright. L’hex è comune nelle specifiche e nell’output generato.
Stili misti in un documento sono HTML valido, ma i team spesso standardizzano sulle entità nominate per la leggibilità del contenuto scritto a mano e sulle forme numeriche nelle pipeline generate.
Il contesto conta per la sicurezza
Le regole di escape dipendono da dove finirà la stringa:
- Nodi di testo HTML — escapare
<,>e&previene l’iniezione accidentale di tag. - Valori di attributi HTML — le virgolette vanno gestite secondo lo stile di quotatura.
- Letterali stringa JavaScript dentro HTML — l’escape con sole entità HTML non basta; serve una codifica consapevole di JS.
- Componenti di query URL — usate il percent-encoding, non le entità HTML.
I framework applicativi forniscono encoder specifici del contesto per un motivo. Un’utilità generale «testo → entità» è eccellente per l’authoring e il debug dei contenuti; da sola non è una difesa XSS completa quando i dati entrano in script, gestori di eventi o CSS.
Usi legittimi comuni
Pubblicare esempi di codice in HTML. Mostrare <div> in una pagina richiede di codificare le parentesi affinché il browser non le tratti come tag reali.
Contenuto email e CMS. Gli editor a volte memorizzano entità; decodificare aiuta a vedere il testo leggibile per migrazione o indicizzazione di ricerca.
Normalizzare il copia-incolla. Word processor e siti web inseriscono e entità di virgolette tipografiche; decodificare chiarisce cosa è stato davvero incollato.
Prove di localizzazione. Verificare che é e é siano gestiti in modo coerente tra i template.
Entità versus encoding URL versus escape Unicode
| Meccanismo | Alfabeto / forma | Uso tipico |
|---|---|---|
| Entità HTML | &name; / &#…; | Testo HTML/XML |
| Percent-encoding | %20, %2F | URL |
JSON \uXXXX | Escape Unicode | Stringhe JSON |
| Entità XML predefinite | Insieme nominato più piccolo | XML |
Scegliere lo strato sbagliato è un bug frequente: mettere %20 nel testo HTML mostra letteralmente %20, mentre mettere in un URL è errato per server che si aspettano percent-encoding.
Limiti
- Codificare ogni carattere come entità numerica rende il sorgente illeggibile ed è raramente necessario.
- Decodificare non esegue HTML; espande solo i riferimenti in una stringa.
- La doppia codifica (
&lt;) è un odore CMS comune—decodificate con attenzione e fermatevi quando il testo è leggibile, altrimenti rischiate di esagerare. - Tenete offline i contenuti sensibili non pubblicati quando la policy lo richiede.
Riepilogo
Le entità HTML consentono a caratteri speciali e rilevanti per il markup di viaggiare in sicurezza nel sorgente HTML. Questo hub abbina convertitori di encode e decode per authoring, didattica e pulizia. Rispettate il contesto di output nelle applicazioni sensibili alla sicurezza, preferite entità nominate chiare per il contenuto scritto a mano e non confondete l’escape HTML con quello URL o JSON.