W tym artykule
Czym jest escapowanie lanskow?
Escapowanie lanskow to proces dodawania specjalnych znakow, aby znaki o znaczeniu skladniowym byly traktowane jako tekst literalny. Kazdy jezyk programowania i format danych rezerwuje okreslone znaki — cudzyslowy w JSON, nawiasy katowe w HTML, znaki procentu w URL.
Bez prawidlowego escapowania lancuchy ze znakami specjalnymi powoduja bledy parsowania, luki bezpieczenstwa jak XSS i SQL injection, lub uszkodzone wyjscie.
Formaty escapowania
Rozne konteksty maja rozne zasady escapowania:
- Escapowanie JSON — escapuje cudzyslowy (\"), odwrotne ukosniki (\\) i znaki sterujace (\n, \t, \r)
- Escapowanie HTML — konwertuje < na <, > na >, & na &. Zapobiega interpretacji tresci jako tagow HTML
- Kodowanie URL — zastepuje niebezpieczne znaki kodami hex %XX (spacja staje sie %20)
- Escapowanie SQL — podwaja pojedyncze cudzyslowy (' staje sie ''). Zapobiega atakom SQL injection
- Escapowanie regex — dodaje odwrotny ukosnik przed metaznakami . * + ? do dopasowania literalnego
Typowe zastosowania
Escapowanie lancuchow pojawia sie w calym cyklu rozwoju:
- Osadzanie danych wejsciowych — prawidlowe escapowanie przy wstawianiu do JSON, HTML lub SQL zapobiega bledom i lukom
- Sanityzacja formularzy — aplikacje webowe musza escapowac przeslana tresc przed wyswietleniem, aby zapobiec XSS
- Budowanie payloadow API — przy tworzeniu tresci zadan JSON wszystkie wartosci lancuchowe musza byc prawidlowo escapowane
Wypróbuj za darmo — bez rejestracji
Wyprobuj narzedzie Escape →Escapowanie vs Kodowanie: jaka jest roznica?
Escapowanie i kodowanie sa czesto mylone. Escapowanie dodaje znaczniki, aby znaki byly traktowane literalnie. Wyjscie pozostaje w tym samym formacie.
Kodowanie konwertuje dane z jednej reprezentacji na inna. Base64 konwertuje dane binarne na tekst ASCII. Kluczowa roznica: escapowanie zachowuje format, kodowanie go zmienia.
Wskazowki i najlepsze praktyki
Prawidlowe escapowanie zapobiega bledom i lukom bezpieczenstwa:
- Escapuj na granicy — zawsze escapuj lancuchy w punkcie wejscia do nowego kontekstu
- Unikaj podwojnego escapowania — jesli framework juz escapuje wyjscie, reczne escapowanie tworzy widoczne odwrotne ukosniki
- Uzywaj escapowania specyficznego dla kontekstu — escapowanie HTML nie chroni przed SQL injection i odwrotnie
Najczesciej zadawane pytania
Kiedy escapowac recznie, a kiedy uzywac biblioteki?
Zawsze preferuj funkcje biblioteczne. Jezyki zapewniaja wbudowane narzedzia, ktore prawidlowo obsluguja przypadki brzegowe.
Czy escapowanie zapobiega wszystkim atakom XSS?
Escapowanie HTML zapobiega wiekszosci atakow XSS, ale nie wszystkim wektorom. Tresc w kontekstach JavaScript, CSS lub URL wymaga dodatkowej sanityzacji. Naglowki CSP zapewniaja najsilniejsza ochrone.
W jakiej kolejnosci escapowac, gdy dane przechodza przez wiele formatow?
Escapuj najpierw dla najwewnetrzniejszego kontekstu. Na przyklad, aby osadzic lancuch w JSON umieszczonym w atrybucie HTML, najpierw JSON-escapuj, potem HTML-escapuj.