HyperText Markup Language alebo HTML je primárny jazyk pre webové stránky na internete. Zahŕňa podporu pre množstvo ďalších jazykov, ktoré pridávajú ďalšie funkcie a štýly, ako sú JavaScript a CSS. Všetky tieto jazyky sú založené na texte s niektorými zmysluplnými znakmi používanými na oddelenie doslovných reťazcov, ktoré by sa mali vytlačiť do prehliadača, a kódu, ktorý by sa mal interpretovať a spustiť.
Tento dizajn má však určité problémy, ktoré sú zrejmé, keď chcete do prehliadača vytlačiť jeden zo zmysluplných znakov. Najlepšie príklady znakov na použitie sú symboly „menšie ako“ a „väčšie ako“. Tieto symboly sa používajú na otváranie a zatváranie segmentov kódu v HTML. Správnou metódou bezpečnej tlače týchto znakov na obrazovku je použitie entít HTML.
HTML entity a bezpečnosť
Vďaka týmto znakom, ktoré majú špeciálny význam, musíte byť naozaj opatrní, aby ste ich nahradili verziou entity HTML, ak ich chcete vytlačiť v prehliadači. Bohužiaľ, mnohí weboví vývojári zabúdajú, že používatelia môžu odosielať vstupy na mnohé webové stránky. Ak tento používateľský vstup obsahuje zmysluplné znaky a nie sú nahradené entitami HTML, v procese nazývanom dezinfekcia, potom má webová lokalita chybu zabezpečenia Cross-Site Scripting (XSS).
Tip: Nepokúšajte sa odosielať na webové stránky špeciálne znaky v snahe nájsť zraniteľné miesta XSS. Toto je technicky hackerstvo a je to trestný čin, pokiaľ nemáte povolenie od vlastníka webovej stránky.
Ako entity HTML fungujú (a niekedy nie)
Entity HTML fungujú, pretože prehliadač vie, že ich má zobraziť ako príslušný špeciálny znak a nepovažuje ho za špeciálny znak. Všetky entity HTML začínajú znakom „&“ a končia bodkočiarkou „;“. Väčšina znakov je identifikovaná číslom entity, hoci niektoré špeciálne znaky majú aj skrátený názov. Napríklad „&“, „<“ a „>“ majú čísla entít „&“, „<“ a „>“, ako aj názvy entít „&“, „<“ a „>“. Prehliadač vie, že tieto reťazce znamenajú, že musí zobraziť príslušné znaky.
Tip: Úplný zoznam názvov entít znakov nájdete tu , aj keď podpora názvov entít sa líši v závislosti od prehliadača.
Vo väčšine prípadov by používatelia mali vidieť iba znaky, ktoré predstavujú entity HTML. Je však možné vidieť zakódované znaky, bežne ampersand „&“, prostredníctvom procesu nazývaného „Dvojité kódovanie“. Toto sa stane, keď sa znak ampersand objaví vo svojej vlastnej zakódovanej verzii. K dvojitému kódovaniu vo všeobecnosti dochádza, keď je vstup správne zakódovaný, keď je odoslaný, avšak pri výstupe sa znova vyčistí. Výsledkom je, že ampersand na začiatku znaku „&“ sa zakóduje druhýkrát a zobrazí sa ako „&“, prehliadač to potom správne interpretuje ako reťazec, ktorý by sa mal vytlačiť ako „&“ po dekódovaní entity HTML a ignorovaní čiastková entita.