HTML escapování je proces nahrazování znaků, které mají v HTML speciální význam, odpovídajícími entitami. Pět znaků, které musí být vždy escapovány, jsou: ampersand (&), menší než (<), větší než (>), dvojité uvozovky (") a jednoduché uvozovky ('). Bez escapování prohlížeč tyto znaky interpretuje jako instrukce značkování místo zobrazitelného textu, což narušuje vykreslování stránky a otevírá dveře injekčním útokům.
Specifikace HTML (udržovaná skupinou WHATWG) definuje dvě formy odkazů na znaky: pojmenované entity jako & a číselné entity jako & nebo &. Pojmenované entity jsou ve zdrojovém kódu čitelnější. Číselné entity (desítkové nebo hexadecimální) mohou reprezentovat libovolný kódový bod Unicode, takže jsou užitečné pro znaky bez pojmenovaného aliasu. Obě formy produkují v prohlížeči identický výstup.
Unescapování (také nazývané dekódování) je opačná operace: převod odkazů na entity zpět na jejich literální znaky. Používá se při extrakci textu z HTML zdroje, migraci obsahu mezi systémy nebo ladění šablon, které entity dvojitě kódují. Tento nástroj zvládá oba směry v prohlížeči, takže můžete ověřit svou logiku escapování nebo během několika sekund získat prostý text z HTML zdroje.
Proč použít HTML escape nástroj?
Ruční nahrazování úhlových závorek a ampersandů ve velkých blocích textu je zdlouhavé a náchylné k chybám. Specializovaný nástroj provede převod v jednom kroku bez nutnosti instalace.
⚡
Okamžitý převod
Vložte text nebo HTML a okamžitě získejte escapovaný nebo unescapovaný výstup. Žádné čekání na server, protože veškeré zpracování probíhá lokálně v JavaScriptu.
🔒
Zpracování zaměřené na soukromí
Váš vstup nikdy neopustí prohlížeč. Nic není odesíláno na server ani nikde ukládáno, takže je bezpečné escapovat kód obsahující přihlašovací údaje, API klíče nebo interní kód.
📋
Bez účtu ani nastavení
Otevřete stránku a začněte vkládat. Žádná přihlašovací bariéra, žádná emailová brána, žádný software k instalaci. Funguje na jakémkoli zařízení s moderním prohlížečem.
🌐
Plné pokrytí entit
Zpracovává pět povinných speciálních znaků HTML i číselné entity (desítkové a hexadecimální). Podporuje obousměrný převod: escapování a následné unescapování vrátí původní řetězec.
Případy použití HTML escapování
Frontend vývojář: zobrazování uživatelského vstupu
Při vykreslování uživatelem zadaného textu na stránce ho nejprve escapujte, aby ho prohlížeč neinterpretoval jako HTML značky. Jde o primární ochranu před uloženým XSS v každé šabloně, která vypisuje nezpracované řetězce.
Backend inženýr: generování HTML odpovědí
Serverový kód, který sestavuje řetězce do HTML, musí před vložením escapovat dynamické hodnoty. Pomocí tohoto nástroje ověřte, že vaše escapovací funkce produkuje správný výstup pro okrajové případy jako vnořené uvozovky.
DevOps: vkládání konfigurace do HTML
Vložený JSON nebo příkazy shellu uvnitř HTML stránky (například v tagu script nebo v datovém atributu) vyžadují escapování. Ověřte, že úhlové závorky a ampersandy ve vašich konfiguračních úryvcích jsou správně zakódovány.
QA inženýr: testování XSS vektorů
Vložte běžné XSS payloady do nástroje a potvrďte, že výstup vaší aplikace odpovídá správně escapované verzi. Porovnejte escapovaný výstup znak po znaku s tím, co produkuje vaše aplikace.
Technický spisovatel: ukázky kódu v dokumentaci
Publikování ukázek kódu v HTML dokumentaci (Jekyll, Hugo, vlastní CMS) vyžaduje escapování úhlových závorek pro syntaxi generických typů a zástupné symboly šablon. Vložte ukázku kódu a každý speciální znak je okamžitě zakódován.
Student: výuka HTML entit
Napište nebo vložte libovolný znak a prohlédněte si jeho pojmenované i číselné entity. Experimentujte s okrajovými případy jako nezlomitelné mezery, pomlčky em a Unicode symboly, abyste pochopili, jak funguje kódování znaků v HTML.
Referenční tabulka HTML entit
Tabulka níže uvádí běžně používané HTML entity. Pět speciálních znaků (& < > " ') musí být vždy escapováno v obsahu HTML i v hodnotách atributů. Ostatní entity jsou volitelné, ale užitečné pro znaky, které se obtížně zadávají nebo jsou ve zdrojovém kódu nejednoznačné.
Escapování vs. unescapování: kdy použít který směr
Obě operace jsou navzájem inverzní. Zvolení špatného směru produkuje dvojitě zakódovaný nebo nechráněný výstup.
Escapovat (zakódovat)
Použijte při vkládání nedůvěryhodného nebo dynamického textu do HTML. Převádí literální < na <, aby prohlížeč znak zobrazil místo zahájení značky. Aplikujte před vykreslením uživatelského vstupu, záznamů logu nebo jakéhokoli řetězce, který může obsahovat kód.
Unescapovat (dekódovat)
Použijte při extrakci prostého textu z HTML zdroje. Převádí < zpět na <. Aplikujte při migraci obsahu z CMS, parsování stažených HTML stránek nebo opravě dvojitě zakódovaných řetězců jako &amp;, které zobrazují názvy entit místo znaků.
Ukázky kódu
Níže jsou funkční příklady HTML escapování a unescapování ve čtyřech jazycích. Každý úryvek pokrývá oba směry a zpracovává okrajové případy jako vnořené uvozovky a číselné entity.
Jaký je rozdíl mezi HTML escapováním a URL kódováním?
HTML escapování nahrazuje znaky speciální v HTML (< > & " ') entitami jako <, aby se zobrazily jako text. URL kódování (percent-encoding) nahrazuje znaky nebezpečné v URL hexadecimálními sekvencemi %XX. Každé chrání jiný kontext: HTML escapování zabraňuje injekci kódu, zatímco URL kódování zajišťuje platné query řetězce a segmenty cesty.
Které znaky musí být v HTML escapovány?
Pět znaků, které musí být vždy escapovány, jsou: & (ampersand), < (menší než), > (větší než), " (dvojité uvozovky v atributech) a ' (jednoduché uvozovky v atributech). Neescapování kteréhokoli z nich může narušit vykreslování nebo vytvořit zranitelnost cross-site scripting.
Je ' platné v HTML5?
Ano. Pojmenovaná entita ' je definována ve specifikaci HTML5 a podporována všemi moderními prohlížeči. Nebyla součástí HTML 4, který rozpoznával pouze &, <, > a ". Pokud potřebujete podporovat velmi staré HTML 4 parsery, použijte místo toho číselnou formu '.
Jak opravit dvojitě zakódované HTML entity jako &amp;?
Dvojité kódování nastane, když již escapovaný řetězec projde escapovací funkcí podruhé. Opravou je unescapování, dokud se výstup nestabilizuje. Vložte dvojitě zakódovaný řetězec do tohoto nástroje v režimu unescapování, a pokud zůstanou reference &, spusťte ho znovu. Chcete-li dvojitému kódování předejít, zkontrolujte, zda vstup není již escapován, než aplikujete escapovací funkci.
Mohu HTML entity používat uvnitř JavaScriptových řetězců?
HTML entity interpretuje HTML parser, ne JavaScript engine. Uvnitř bloku script kód běží poté, co HTML parser zpracuje stránku, takže < v bloku script se změní na < dříve, než ho JavaScript uvidí. U inline event handlerů (onclick apod.) je hodnota atributu nejprve HTML dekódována, pak spuštěna jako JavaScript. V externích souborech .js nemají entity žádný speciální význam a jsou považovány za literální text.
Jaký je rozdíl mezi htmlspecialchars a htmlentities v PHP?
htmlspecialchars() escapuje pouze pět speciálních znaků (& < > " '), které ovlivňují strukturu HTML. htmlentities() escapuje těchto pět i každý znak, který má pojmenovanou HTML entitu, jako je znak autorských práv a písmena s diakritikou. Pro bezpečnostní účely postačuje htmlspecialchars() s ENT_QUOTES. htmlentities() je užitečné, když potřebujete výstup kompatibilní s ASCII pro systémy, které nemohou pracovat s UTF-8.
Je HTML escapování dostatečné pro ochranu před XSS?
HTML escapování zabraňuje XSS v nejběžnějším případě: vkládání nedůvěryhodného textu do obsahu HTML elementů nebo hodnot atributů. Nechrání jiné injekční kontexty. Vkládání uživatelských dat do bloku script vyžaduje escapování JavaScriptových řetězců. Vkládání do atributu style vyžaduje CSS escapování. Vkládání do URL atributu (href, src) vyžaduje validaci URL i kódování. Kompletní obrana před XSS aplikuje kontextově specifické escapování na každém místě vkládání.