String Escape/Unescape
Wszechstronne narzędzie do zamiany znaków specjalnych w łańcuchach JSON, HTML, XML, URL i innych formatach. Konwertuje znaki specjalne na ich zakodowane odpowiedniki lub dekoduje je z powrotem, zapewniając integralność danych w różnych kontekstach. Idealne dla twórców stron internetowych, integracji API i zadań przetwarzania danych.
Często zadawane pytania
Narzędzie obsługuje wiele formatów ucieczki, w tym JSON (cudzysłowy, nowe linie, tabulatory), encje HTML, encje XML, kodowanie adresów URL i ucieczkę ciągów JavaScript, umożliwiając przygotowanie ciągów dla różnych kontekstów.
Łańcuchy specjalne dla JSON, gdy trzeba uwzględnić znaki specjalne, takie jak cudzysłowy, odwrotne ukośniki lub nowe linie w wartościach JSON, zapewniając prawidłową składnię JSON i zapobiegając błędom parsowania.
Tak, narzędzie działa dwukierunkowo. Możesz usunąć zakodowane ciągi znaków, aby zobaczyć oryginalny tekst, dzięki czemu jest to przydatne do debugowania i zrozumienia uciekających danych z interfejsów API lub baz danych.
Ucieczka HTML konwertuje znaki takie jak <, >, & i cudzysłowy na encje HTML (<, >, &, "), aby zapobiec atakom XSS i problemom z wyświetlaniem, podczas gdy ucieczka JSON obsługuje znaki, które łamią składnię JSON.
Kodowanie adresów URL (percent-encoding) to specyficzny rodzaj ucieczki, który konwertuje znaki specjalne do formatu %XX w celu bezpiecznego użycia w adresach URL, co różni się od ucieczki JSON lub HTML.
Prawidłowe unikanie ciągów znaków zapobiega atakom wstrzykiwania (XSS, SQL injection), zapewniając, że dane wejściowe użytkownika są traktowane jako dane, a nie kod wykonywalny, co czyni je krytyczną praktyką bezpieczeństwa w tworzeniu stron internetowych.
Unikanie JSON jest zgodne ze ścisłym standardem (RFC 8259) wymagającym odwrotnych ukośników dla cudzysłowów (\"), odwrotnych ukośników (\\) i znaków sterujących (\n, \t, \r). Unikanie ciągów JavaScript jest podobne, ale bardziej liberalne, pozwalając na dodatkowe ucieczki, takie jak \v (pionowy tabulator), \0 (null) i \x (ucieczki szesnastkowe). JSON wymaga również par zastępczych UTF-16 dla znaków spoza BMP, podczas gdy JavaScript może używać notacji \u{XXXXXX}. Aby zapewnić ścisłą kompatybilność, w odpowiedziach API i wymianie danych należy zawsze stosować escaping JSON.
Każdy język ma określone wymagania dotyczące ucieczek: Python używa odwrotnych ukośników (\n, \t, \') i obsługuje surowe łańcuchy (r'text'), JavaScript używa podobnych ucieczek plus literały szablonów, C/C++ wymaga ucieczki cudzysłowów i odwrotnych ukośników, SQL wymaga podwojenia pojedynczych cudzysłowów ('') lub ich ucieczki, a skrypty powłoki wymagają ostrożnej ucieczki $, ` i cudzysłowów. Aby uniknąć luk w zabezpieczeniach, zawsze używaj wbudowanych funkcji ucieczki języka (takich jak json.dumps() Pythona, JSON.stringify() JavaScriptu lub sparametryzowanych zapytań SQL), a nie ręcznej ucieczki.
Podstawowe sekwencje specjalne obejmują: \n (podawanie nowej linii/linii), \r (powrót karetki), \t (tabulator), \" (podwójny cudzysłów), \' (pojedynczy cudzysłów), \\ (odwrotny ukośnik), \0 (znak null), \b (backspace) i \f (form feed). Dla Unicode: \uXXXX (4-cyfrowy szesnastkowy) i \xXX (2-cyfrowy szesnastkowy). Różne konteksty wymagają różnych ucieczek - JSON używa \/, HTML używa < i >, XML jest podobny do HTML, a wyrażenia regularne używają \d, \w, \s dla klas znaków.
Ataki XSS polegają na wstrzykiwaniu złośliwych skryptów poprzez wykorzystanie nieuwolnionych danych wejściowych użytkownika na stronach internetowych. Prawidłowa ucieczka konwertuje niebezpieczne znaki na bezpieczne reprezentacje: < staje się <, > staje się >, & staje się &, " staje się ", a ' staje się '. Zapobiega to interpretowaniu przez przeglądarki danych wprowadzanych przez użytkownika jako kodu HTML lub JavaScript. Na przykład, jeśli użytkownik wprowadzi <script>alert('XSS')</script>, ucieczka HTML konwertuje go na nieszkodliwy tekst, który wyświetla się dosłownie zamiast wykonywać. Zawsze uciekaj od danych wyjściowych w oparciu o kontekst - HTML dla zawartości strony, JavaScript dla bloków skryptów, URL dla linków.
