Kodowanie URL vs kodowanie HTML

Kodowanie URL i kodowanie HTML są różne, choć często mylone. Zrozumienie różnicy jest kluczowe dla bezpieczeństwa stron internetowych i prawidłowego przetwarzania danych.

Różne cele

Kodowanie URL służy do przekazywania danych w URL-ach. HTML kodowanie (znane również jako encje HTML) służy do wyświetlania znaków specjalnych w dokumentach HTML. Używają różnych formatów: Kodowanie URL używa %XX (procent i hex), Kodowanie HTML używa &name; lub &#number; (ampersand i średnik). Przykład różnicy: Spacja jest %20 w kodowaniu URL, ale &nbsp; lub &#32; w HTML. Ampersand & jest %26 w URL, ale &amp; w HTML. Mniejszy niż < jest %3C w URL, ale &lt; w HTML. Używaj kodowania URL dla: Parametrów łańcucha zapytania, komponentów ścieżki URL, przekierowań OAuth, dowolnych danych w URL-ach. Używaj kodowania HTML dla: Treści wyświetlanej na stronach internetowych, wartości atrybutów HTML, zapobiegania atakom XSS, wyświetlania znaków specjalnych w HTML. Mogą być potrzebne oba: Jeśli URL pojawia się w HTML, potrzebujesz obydwu. Najpierw zakoduj URL, a następnie zakoduj HTML, gdy wstawiasz go do atrybutu href.

Implikacje bezpieczeństwa

Mieszanie kodowania URL i HTML prowadzi do luk bezpieczeństwa. Używanie kodowania HTML w URL-ach nie chroni przed atakami, a używanie kodowania URL w HTML nie zapobiega XSS. Typowy błąd: Używanie encji HTML (&amp;) w URL-ach nie działa. Serwery nie dekodują encji HTML w URL-ach. Musi być %26. Kolejność ma znaczenie: Gdy URL pojawia się w HTML, zakoduj URL, następnie zakoduj HTML wynik. Odwrotna kolejność tworzy niepoprawne URL-e. XSS zapobieganie wymaga właściwego kodowania. Dla URL-ów w JavaScript użyj encodeURIComponent(). Dla zawartości HTML użyj funkcji escape HTML swojego frameworka. Zawsze używaj właściwego kodowania dla kontekstu. W URL? Kodowanie URL. W HTML? Kodowanie HTML. W JavaScript string? Escape JavaScript. Mieszanie ich tworzy luki.

Wypróbuj Narzędzie

Koder/Dekoder URL

Koder/Dekoder URL

Powiązane Artykuły