HyperText Markup Language, o HTML, è il linguaggio principale per le pagine web su Internet. Include il supporto per una serie di altri linguaggi che aggiungono funzionalità e stili extra come JavaScript e CSS. Tutti questi linguaggi sono basati su testo con alcuni caratteri significativi usati per separare le stringhe letterali che dovrebbero essere stampate sul browser e il codice che dovrebbe essere interpretato ed eseguito.
Tuttavia, questo design presenta alcuni problemi, che diventano evidenti quando si desidera stampare uno dei caratteri significativi sul browser. I migliori caratteri di esempio da utilizzare sono i simboli "minore di" e "maggiore di". Rispettivamente questi simboli vengono utilizzati per aprire e chiudere i segmenti di codice in HTML. Il metodo corretto per stampare questi caratteri sullo schermo in modo sicuro consiste nell'utilizzare entità HTML.
Entità HTML e sicurezza
Grazie a questi caratteri che hanno un significato speciale devi stare molto attento a assicurarti di sostituirli con la versione dell'entità HTML se vuoi che vengano stampati sul browser. Sfortunatamente, molti sviluppatori web dimenticano che gli utenti possono inviare input a molti siti web. Se questo input dell'utente include caratteri significativi e non vengono sostituiti con entità HTML, in un processo chiamato sanificazione, il sito Web presenta una vulnerabilità Cross-Site Scripting (XSS).
Suggerimento: non provare a inviare caratteri speciali ai siti Web nel tentativo di trovare vulnerabilità XSS. Fare ciò è tecnicamente hacking ed è un reato penale a meno che tu non abbia il permesso del proprietario del sito web.
Come funzionano le entità HTML (ea volte no)
Le entità HTML funzionano perché il browser sa di visualizzarlo come il carattere speciale rilevante e di non trattarlo come un carattere speciale. Tutte le entità HTML iniziano con una e commerciale "&" e terminano con un punto e virgola ";". La maggior parte dei caratteri è identificata da un numero di entità, sebbene alcuni caratteri speciali abbiano anche un nome abbreviato. Ad esempio, "&", "<" e ">" hanno rispettivamente i numeri di entità "&", "<" e ">" nonché i nomi di entità "&", "<" e ">". Il browser sa che queste stringhe significano che deve visualizzare i caratteri rilevanti.
Suggerimento: qui è possibile trovare un elenco completo dei nomi delle entità carattere , sebbene il supporto per i nomi entità vari in base al browser.
Nella maggior parte dei casi, gli utenti dovrebbero vedere solo i caratteri rappresentati dalle entità HTML. È possibile, tuttavia, vedere i caratteri codificati, comunemente e commerciale "&", attraverso un processo chiamato "Doppia codifica". Ciò accade quando il carattere e commerciale appare nella propria versione codificata. La doppia codifica si verifica generalmente quando l'input è codificato correttamente, poiché viene inviato, tuttavia, quando viene emesso, viene nuovamente disinfettato. Ciò fa sì che la e commerciale all'inizio di "&" venga codificata una seconda volta e appaia come "&", il browser quindi la interpreta correttamente come una stringa che dovrebbe essere stampata come "&" dopo aver decodificato l'entità HTML e ignorata l'entità parziale.