Čítanie zakódovaných HTML znakov
Tento smer použite, keď skopírovaný reťazec obsahuje referencie ako &, < alebo číselné referencie a potrebujete čitateľné pôvodné znaky. Sekvencia predstavujúca ampersand sa zmení na ampersand; sekvencia pre znak menší ako dá tento znak vo výstupe. Prevodník zobrazuje dekódovaný výsledok ako obyčajný text. Pomáha to pri kontrole logov, exportov alebo správ ošetrených pre zobrazenie, v ktorých referencie zakrývajú zamýšľanú interpunkciu.
Výstup nie je zárukou bezpečnosti pri spracovaní ako značkovanie. Dekódovanie referencie pre otváraciu zátvorku môže napríklad odhaliť reťazec podobný HTML značke. Ak výsledok neskôr vložíte pomocou innerHTML, dostane HTML význam; textContent ho ponechá ako text. Niektoré referencie sú pomenované, iné číselné, a pravidlá prehliadača majú výnimky. Ak záleží na presnom spätnom prevode, porovnajte pôvodné bajty a cieľový parser namiesto predpokladu, že dvojité ošetrenie vyrieši jediný krok.
HTML entity a kontext prehliadača
HTML vyhradzuje znaky ako ampersand a ostré zátvorky pre značkovanie. Znakové referencie umožňujú zapísať ich ako dáta: & napríklad predstavuje ampersand a < znak menší ako. Prehliadač ich interpretuje pri spracovaní HTML. Existujú pomenované aj číselné referencie, no ich význam závisí od kontextu, v ktorom ich číta HTML parser. Text podobný entite v obyčajnom súbore ešte neznamená, že bol tento súbor vykreslený ako HTML.
Je dôležité rozlišovať textový obsah a vykonateľné značkovanie. Bezpečné zobrazenie textu od používateľa na stránke nie je to isté ako vloženie dôveryhodného HTML fragmentu. Textový uzol, atribút, URL, pravidlo CSS aj reťazec JavaScriptu majú odlišné požiadavky na ošetrenie. Prevod entít je spôsob zápisu, nie úplná bezpečnostná politika ani sanitizácia HTML. Na konkrétne miesto vloženia hodnoty použite vhodné šablóny alebo rozhranie DOM.
Pred dekódovaním overte zakódovaný zdroj
Začnite hodnotou, ktorá je skutočne zapísaná očakávaným spôsobom. Vložte zakódovaný komponent alebo sled bajtov a porovnajte čitateľný výstup so záznamom, z ktorého pochádza. Dekodér beží v tomto prehliadači a reťazec neposiela na server na konverziu. Poškodený vstup alebo iný formát môže podľa operácie zlyhať či zostať čiastočne nezmenený. Zachovajte pôvodnú zakódovanú hodnotu, aby ste vedeli, či nečakaný znak pochádzal zo zdroja alebo z vašej interpretácie.
Dekódovaný text považujte za nový, potenciálne nedôveryhodný vstup. Čitateľná veta môže obsahovať značkovanie, URL, text podobný príkazu alebo súkromné údaje, ktoré treba ošetriť samostatne. Nevkladajte ju do vykonateľného kontextu len preto, že dekódovanie prešlo. Ak výsledok nesedí, overte deklarované kódovanie znakov a či skorší systém hodnotu nezakódoval viackrát. Opakované dekódovanie bez poznania vrstiev môže zmeniť doslovný oddeľovač na aktívnu štruktúru.