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 lub   w HTML. Ampersand & jest %26 w URL, ale & w HTML. Mniejszy niż < jest %3C w URL, ale < 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 (&) 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