& < > " ' . Extended codifica anche tutti i caratteri non ASCII. Scegli tra entità nominate (&), decimali (& ) oppure esadecimale (&).Come funziona
Le entità HTML rappresentano caratteri che hanno un significato speciale nel markup (< > & " ') o che non sono ASCII, mediante sequenze come <, & o ©. Così il browser li mostra come testo anziché interpretarli come codice.
Ci sono tre formati equivalenti: con nome (©), decimale (©) ed esadecimale (©). Tutti e tre producono lo stesso carattere; quello con nome è più leggibile ma esiste solo per un insieme noto.
L'ambito "essenziale" fa l'escape solo dei caratteri che rompono l'HTML (& < > " '); l'ambito "tutti" fa l'escape anche di qualsiasi carattere non ASCII.
Esempi
<a href="#"><a href="#">L'escape impedisce al browser di interpretare i tag e li mostra come testo.5 < 10 & 3 > 15 < 10 & 3 > 1© 2024 · €© 2024 · €Con ambito "tutti" e formato con nome. In decimale sarebbero © e €; in esadecimale, © e €.Casi d'uso
- Mostrare codice HTML come testo in una pagina (esempi, documentazione) senza che venga renderizzato.
- Fare l'escape dell'input dell'utente prima di inserirlo nell'HTML per prevenire l'XSS.
- Inserire simboli speciali (©, €, →, ½) in modo portabile tra le codifiche.
- Decodificare testo con entità copiato dal codice sorgente di una pagina.
Domande frequenti
Quale formato conviene: con nome, decimale o esadecimale?
Quello con nome (©) è il più leggibile, ma copre solo i caratteri con un nome definito. Il decimale (©) e l'esadecimale (©) funzionano per qualsiasi carattere Unicode, quindi sono l'opzione sicura per i simboli poco comuni.
Codificare le entità previene gli attacchi XSS?
È una parte importante, ma l'escape va fatto in base al contesto (contenuto HTML, attributo, JavaScript o URL). Non affidarti a un solo livello: usa anche le protezioni del framework.
Quali sono i caratteri che vanno sempre sottoposti a escape?
& < e > nel contenuto, e inoltre " e ' all'interno dei valori degli attributi. L'ambito "essenziale" copre esattamente quell'insieme.
Il mio testo viene inviato a un server?
No. La codifica e la decodifica avvengono interamente nel tuo browser.