Čo sú entity HTML

click fraud protection

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 sanitácia, 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 „&“, „“ majú čísla entít „&“, „“, ako aj názvy entít „&“, „“. Prehliadač vie, že tieto reťazce znamenajú, že musí zobraziť príslušné znaky.

Tip: Môžete nájsť úplný zoznam názvov entít znakov 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 vtedy, 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 druhýkrát zakóduje a zobrazí sa ako „&“, prehliadač sa potom správne to interpretuje ako reťazec, ktorý by sa mal vytlačiť ako „&“ po dekódovaní entity HTML a ignorovaní časti subjekt.