Kódování / dekódování HTML
Bezpečné zobrazení uživatelského vstupu převodem < na < a & do &. Dekódujte entity při čtení uložených úryvků HTML zpět na prostý text pro indexování vyhledávání. Běží lokálně pro ladění šablon a CMS.
Vstup
Výstup
Hello world
Jak kódovat nebo dekódovat HTML
1. Vyberte režim kódování (escape) nebo dekódování.
2. Vložte HTML nebo prostý text.
3. Zkopírujte escapovaný výstup pro šablonu nebo atribut.
4. Dekódujte pro čtení exportů XML/HTML s velkým množstvím entit.
Příklady HTML entit
Bezpečné zobrazení uživatelského komentáře
Vstup <script>alert(1)</script> se stane neškodným textem, když je zakódován pro bezpečné vkládání pomocí vnitřního HTML pomocí textového uzlu.
Apostrof v atributu
O'Reilly in title attribute encodes quote as ' or ' depending on context.
Dekódovat export CMS
Popis produktu & kopie; dekóduje do & pro úpravy.
Kdy kódovat HTML
• Při vkládání nedůvěryhodného textu do HTML šablon.
• Při ladění dvojitého kódování v e-mailových šablonách.
• Při přípravě úryvků HTML generovaných markdown.
Když kódování nestačí
• Když potřebujete dezinfikovat HTML pomocí povolených značek — použijte knihovnu stylů DOMPurify.
• Když je obsahem řetězec JavaScript — také uvozovky pro kontext JS.
• Když je adresa URL v href — použijte kodér URL samostatně.
Na kontextu záleží
HTML escapování pro hodnoty atributů se může lišit od textových uzlů — na uvozovkách v atributech záleží. Cheat sheet OWASP uvádí také kontexty JS a CSS.
Chyba dvojitého kódování
&amp; v DB znamená, že někdo zakódoval dvakrát — jednou dekódovat, opravit potrubí, zakódovat jednou na výstupu.
Email HTML
Klienti se liší v podpoře entit — otestujte zakódované speciální znaky v Outlooku a Gmailu.
Časté dotazy
Pojmenované vs číselné entity?
& vs & — ekvivalent pro běžné znaky; emotikony mohou potřebovat 😀 číselná forma.
Kódovat celý HTML dokument?
Kódování celého dokumentu zobrazuje doslovné značky — obvykle kóduje pouze uživatelská data.
Prevence XSS?
Kódování textových uzlů pomáhá; nikdy spojovat nezpracované uživatelské HTML. Hlavičky CSP přidávají obranu.
Znaky UTF-8?
V moderním HTML5 se často ponechává jako UTF-8; entity nepovinné pro non-ASCII.
Místní?
Ano.
Markdown výstup?
Spárovat s markdownToHtml — ke kódování dochází na vrstvě renderu ve správných kanálech.