Encoder / Decoder HTML
Escape'uj znaki specjalne HTML albo dekoduj encje z powrotem. Przydatne do bezpiecznego osadzania inputu użytkownika albo debugowania zescape'owanego markupu.
Wpisz dane powyżej, aby zobaczyć wynik.
Do czego to służy?
HTML rezerwuje pięć znaków o znaczeniu strukturalnym — &, <, >, ", '. Wstawienie któregokolwiek z nich na stronę jako treści wymaga zescape'owania ich jako encji HTML, żeby przeglądarka nie potraktowała ich jako markupu. To narzędzie idzie w obie strony: koduje surowy tekst na bezpieczne encje, albo dekoduje zeskrobany HTML z powrotem na zwykły tekst.
Kiedy tego użyć
- Osadzanie nieufanej treści użytkownika w HTML — zakoduj najpierw, żeby zapobiec XSS.
- Dekodowanie zeskrobanego albo skopiowanego markupu, który przyszedł z encjami (
&,',“). - Odplątywanie szablonów, które zostały przypadkowo zescape'owane podwójnie.
- Przygotowanie snippetów do JSDoc, XML bez CDATA albo code fence'ów Markdowna, które potrzebują dosłownych ostrych nawiasów.
Częste pułapki
- Encoding to nie sanityzacja. Encoding sprawia, że tekst można bezpiecznie wyświetlić; jeśli chcesz też wyciąć tagi, potrzebujesz sanitizera HTML.
- Atrybuty vs treść. Oba konteksty wymagają tych samych pięciu znaków escape'owanych, ale handlery JS typu
onclickpotrzebują dodatkowego escape'owania (czego to narzędzie nie robi — trzymaj nieufne dane z dala od atrybutów). - Decoder jest permisywny. Encje nazwane (
“), dziesiętne (") i hex (") — wszystko dekoduje przez parser przeglądarki, więc akceptuje wszystko, co przyjąłby prawdziwy browser. - Nie koduj podwójnie. Zakodowanie już zakodowanej wartości daje
&amp;. Najpierw zdekoduj, jeśli widzisz encje w inpucie.