HTML – kodowanie/odkodowywanie
HTML – kodowanie/odkodowywanie
HTML – kodowanie/odkodowywanie obsługuje escapowanie i deescapowanie encji HTML, radzi sobie ze znakami specjalnymi i wyświetlaniem tagów oraz sprawdza się przy prezentacji danych użytkownika, przykładach kodu i bezpiecznej publikacji treści.
Szybki start
Typowe scenariusze
Komentarze użytkowników
koduj treść komentarzy, aby zapobiec atakom XSS.
Artykuły/blog
bezpieczne wyświetlanie przykładów kodu HTML w treści.
Posty na forum
bezpieczna prezentacja treści generowanej przez użytkowników.
Wiadomości na czacie
zapobieganie rozprzestrzenianiu się złośliwego kodu przez funkcje czatu.
Dane z formularzy
przetwarzanie i wyświetlanie danych przesłanych w formularzach.
Prezentacja kodu
wyświetlanie fragmentów HTML/JavaScript na stronie.
Dodatkowy scenariusz
encje HTML, escape HTML i unescape HTML można obsłużyć w tym samym przepływie, aby szybciej sprawdzić wynik przed kopiowaniem lub eksportem.
Zasady kodowania i encje
Wskazówki użycia
Ograniczenia i kompatybilność
Prywatność i bezpieczeństwo
Najczęstsze pytania
XSS (cross‑site scripting) to atak, w którym napastnik wstrzykuje złośliwy skrypt do strony, aby kraść dane użytkownika lub wykonywać nieautoryzowane działania. HTML‑escaping jest podstawową linią obrony przed XSS.
Zawsze, gdy wyświetlasz treść pochodzącą od użytkownika: komentarze, formularze, treść z zewnętrznych źródeł. Jeśli istnieje szansa, że tekst zawiera znaczniki HTML, powinien zostać zakodowany.
Obie formy reprezentują znak < (mniejszości). < to encja nazwana (lt = less‑than), a </< to encje numeryczne/szesnastkowe. W nowoczesnym HTML działają tak samo: dla czytelności preferuj <, a w sytuacjach, gdzie nazwy nie są wspierane albo trzeba kodować dowolne znaki/między językami znaczników – użyj form numerycznych. Pamiętaj o średniku na końcu encji (np. <); jego brak może spowodować błędną interpretację z sąsiednimi znakami.
Nie. HTML‑escape działa tylko w kontekście HTML. W atrybutach, JS, CSS czy URL potrzebne są inne strategie i zasady kodowania.
To efekt podwójnego kodowania. Najpierw < zamienia się w <, a potem & w &amp;, co daje &amp;lt;. Należy unikać wielokrotnego kodowania tej samej treści.
Do tego służy „sanitization”, czyli oczyszczanie z wykorzystaniem listy dozwolonych tagów/atrybutów i protokołów. Najczęściej dopuszcza się jedynie p/br/ul/ol/li/a/strong/em/code/pre/blockquote/h1–h3; dla a zwykle tylko href/title/target z protokołami http/https/mailto/tel, a dla img jedynie src/alt. Z zasady usuwa się style i wszystkie atrybuty on*. W praktyce warto używać bibliotek pokroju DOMPurify/sanitize-html i wykonywać oczyszczanie po stronie serwera; nigdy nie wstrzykuj niesanitowanych danych do innerHTML/dangerouslySetInnerHTML, a do czystego tekstu korzystaj z textContent.