Skip to main content
CheckTown
Konwertery

Kodowanie encji HTML: Zapobiegaj XSS i wyświetlaj znaki specjalne

Opublikowano 5 min czytania
W tym artykule

Czym są encje HTML?

Encje HTML to specjalne kody reprezentujące znaki, które mają specjalne znaczenie w HTML lub nie mogą być wpisane bezpośrednio. Na przykład &lt; jest encją HTML dla znaku < (mniejszości), który w przeciwnym razie byłby interpretowany jako początek znacznika HTML.

Encje mogą być nazwane (&lt;, &amp;, &copy;) lub numeryczne (&#60;, &#38;). Nazwane encje są bardziej czytelne; encje numeryczne działają dla dowolnego znaku Unicode nawet bez określonej nazwy.

Jak działa kodowanie encji HTML

Koder skanuje tekst w poszukiwaniu znaków wymagających escapowania i zastępuje je odpowiednimi encjami.

  • Krytyczne escapowanie — < > & " ' są zawsze escapowane, aby zapobiec wstrzyknięciu HTML i XSS
  • Rozszerzone escapowanie — opcjonalne kodowanie wszystkich znaków spoza ASCII jako encji numerycznych
  • Tryb dekodowania — konwertuje HTML zakodowany encjami z powrotem do zwykłego tekstu

Wypróbuj za darmo — bez rejestracji

Koduj encje HTML →

Kiedy stosować kodowanie encji HTML

Kodowanie encji HTML jest kluczowe dla bezpieczeństwa i poprawnego wyświetlania znaków specjalnych na stronach internetowych.

  • Wyświetlanie treści użytkowników — zawsze koduj treści generowane przez użytkowników przed renderowaniem w HTML, aby zapobiec atakom XSS
  • Szablony e-mail — koduj znaki specjalne w szablonach HTML e-mail, aby zapewnić poprawne renderowanie
  • Dokumentacja — escapuj przykłady kodu w dokumentacji HTML, aby nawiasy kątowe wyświetlały się poprawnie

Najczęściej zadawane pytania

Czym jest XSS i jak kodowanie encji temu zapobiega?

Cross-Site Scripting (XSS) to atak polegający na wstrzykiwaniu złośliwych skryptów do stron internetowych oglądanych przez innych użytkowników. Jeśli użytkownik prześle <script>alert('xss')</script> i zostanie to wyrenderowane jako HTML, skrypt zostanie wykonany. Kodowanie encji zamienia < na &lt;, sprawiając że jest renderowane jako tekst i uniemożliwia wykonanie skryptu.

Kiedy powinienem używać &amp; zamiast & w HTML?

W atrybutach i treści HTML znak & musi być kodowany jako &amp; zawsze, gdy nie jest częścią encji HTML. Niezakodowany & w HTML jest błędem parsowania. W URL-ach wewnątrz atrybutów href & również musi być kodowany jako &amp;, aby HTML był poprawny (choć przeglądarki są tu wyrozumiałe).

Czy kodowanie encji HTML chroni przed SQL injection?

Nie. Kodowanie encji HTML chroni wyłącznie przed wstrzyknięciem HTML (XSS). Do ochrony przed SQL injection należy używać parametryzowanych zapytań lub przygotowanych instrukcji w warstwie bazy danych. Są to osobne wektory ataku wymagające różnych zabezpieczeń — nigdy nie polegaj na kodowaniu HTML w celu ochrony przed SQL injection.

Powiązane narzędzia