Codificatore / Decodificatore di Entità HTML
Converti caratteri speciali in entità HTML (&, <, ©) o decodifica entità in testo leggibile — in entrambe le direzioni, in tempo reale.
959 visualizzazioni
Come Funziona
HTML riserva alcuni caratteri per la propria sintassi: < e > delimitano i tag, e & avvia un riferimento a un'entità. Se questi caratteri compaiono letteralmente all'interno di un contenuto che viene inserito in una pagina — un commento, un nome utente, una query di ricerca rimandata a video — il browser cerca di interpretarli come markup invece di mostrarli come testo. La codifica li converte nella loro forma di entità (<, >, &) in modo che vengano visualizzati come i caratteri letterali invece di essere interpretati. La decodifica inverte questo processo, trasformando entità come & o ’ nei caratteri reali che rappresentano.
Non si tratta di un dettaglio estetico — è un controllo di sicurezza. Se un campo commenti prende l'input dell'utente e lo inserisce nell'HTML della pagina senza prima codificarlo, un visitatore può digitare <script>...</script> e far sì che quello script venga effettivamente eseguito nel browser di ogni altro visitatore: questa classe di vulnerabilità si chiama Cross-Site Scripting (XSS), e codificare l'output non attendibile prima che tocchi l'HTML è la difesa standard contro di essa. Ad esempio, codificare il testo 5 < 10 & 10 > 5 produce 5 < 10 & 10 > 5, che viene visualizzato correttamente e non può essere scambiato per markup.
Cosa Dovresti Sapere
- Le entità con nome e quelle numeriche rappresentano lo stesso carattere in modo diverso.
'(con nome) e'(numerica) significano entrambe una virgoletta singola, ma le entità con nome dipendono dal fatto che il parser riconosca quello specifico nome — le entità numeriche (decimali o esadecimali&#x) sono universalmente supportate e più sicure per l'output generato da macchine. - La codifica non è l'unica difesa. Protegge il contenuto testuale; attributi, URL e contesti JavaScript inline richiedono le proprie regole di escape, poiché un valore all'interno di
href="javascript:..."o all'interno di un blocco<script>viene analizzato secondo regole diverse rispetto al normale testo del corpo. - La conversione è locale. Questo strumento usa il parser DOM nativo del tuo browser — nulla viene caricato o registrato.
- Non tutti i linguaggi di templating lato server fanno l'auto-escape per impostazione predefinita. Alcuni (come il vecchio output PHP o la concatenazione di stringhe grezze) richiedono di chiamare esplicitamente una funzione di escape — dimenticarlo è una delle fonti più comuni di bug XSS nel mondo reale.
- Alcune entità sembrano visivamente quasi identiche. Un apostrofo diritto (
') e una virgoletta singola tipografica destra (’) vengono rese quasi allo stesso modo sullo schermo ma sono sequenze di byte diverse — una distinzione che conta negli esempi di codice o negli URL.
Un esempio concreto di prima/dopo: un campo commenti contenente Bel post! 5 < 10, vero? non richiede alcuna gestione speciale come testo semplice, ma nel momento in cui viene inserito in un template HTML senza escape, un visitatore malintenzionato potrebbe invece inviare <img src=x onerror=alert(1)> — la codifica trasforma tutto ciò in testo inerte e visibile invece di un gestore di errore immagine funzionante.
Domande Frequenti
Perché codificare il testo prima di inserirlo in HTML?
Un < o & non sottoposto a escape nel contenuto HTML può essere interpretato come markup, rompendo il layout della pagina o — molto peggio — permettendo l'esecuzione effettiva di tag <script> o <img onerror> iniettati (Cross-Site Scripting). Codificare in < e & mantiene il testo letterale e inerte, indipendentemente da ciò che un utente ha digitato.
Gestisce sia le entità con nome che quelle numeriche?
Sì — la decodifica riconosce sia le entità con nome (&copy;) sia quelle numeriche, decimali (&#169;) o esadecimali (&#x00A9;). Tutte e tre rappresentano lo stesso carattere ©; lo strumento le normalizza tutte riportandole al glifo effettivo.
Perché usare un'entità numerica invece di una con nome, o viceversa?
Le entità con nome (&apos;, &hellip;) sono più leggibili nel codice sorgente, ma dipendono dal fatto che il parser riconosca quel nome esatto — alcune tra le meno comuni hanno un supporto incoerente negli strumenti più datati. Le entità numeriche (&#39;, &#8230;) sono comprese universalmente da qualsiasi parser HTML, indipendentemente dall'età o dal fornitore, motivo per cui gli strumenti automatizzati e le librerie di sanitizzazione spesso le preferiscono.
La sola codifica rende la mia pagina sicura da XSS?
Gestisce i nodi di testo, ma l'HTML ha altri contesti di iniezione — dentro il valore di un attributo, dentro un URL, dentro un blocco <script> o <style> — ciascuno richiede il proprio approccio di escape, poiché il parser del browser cambia regole a seconda di dove si trova nel documento. Codificare il contenuto testuale con entità è un livello essenziale, non l'intera difesa; un passaggio di "sanitizzazione" più ampio che rimuove o riscrive interi tag è uno strumento separato e più mirato, per quando si vuole intenzionalmente consentire un HTML limitato.
Il mio testo viene inviato da qualche parte?
No — la conversione avviene istantaneamente nel tuo browser usando il parser nativo del DOM; nulla viene caricato, registrato o memorizzato, il che lo rende sicuro anche per testare contenuti reali inviati dagli utenti, incluso qualsiasi cosa sospetti possa contenere un tentativo di iniezione.
Strumenti Simili
Segnala un Problema
Codificatore / Decodificatore di Entità HTML
Commenti
Ancora nessun commento — scrivi il primo!