Escape i unescape stringa
Escape ili unescape stringa za JSON, JavaScript, šablonske literale, SQL, CSV, HTML atribute, regularne izraze i URL adrese, direktno u pregledaču.
Escape nije zamena za parametrizovane upite (prepared statements). Koristi ovaj rezultat za čitanje ili otklanjanje grešaka u SQL-u, nikada za pravljenje upita od korisničkog unosa.
Kako se radi escape ili unescape stringa
- Izaberi cilj u polju Format: JSON string, JavaScript string, JavaScript šablonski literal, SQL string literal, CSV polje, vrednost HTML atributa, regularni izraz ili komponentu URL-a.
- Upiši ili nalepi tekst u polje za unos.
- Klikni Escape da obični tekst pretvoriš u bezbedan literal, ili Unescape da literal vratiš u običan tekst. Rezultat se ažurira dok kucaš, u smeru koji si poslednji izabrao.
- Podesi opcije prikazane za format: Dodaj okolne navodnike, Escape za znakove van ASCII ili Razmaci kao + (podaci obrasca).
- Klikni Kopiraj, ili Koristi rezultat kao unos da obrneš postupak i proveriš da li se dobija isti tekst.
Broj znakova pre i posle prikazan je ispod dugmadi. Sve radi u tvom pregledaču; ništa se ne otprema.
Šta radi svaki format
- JSON string: izbegava
",\i kontrolne znakove (\n,\t,\u0000…), tačno kaoJSON.stringify. Sa Escape za znakove van ASCII svaki znak iznad U+007E postaje\uXXXX(emodži postaju surogat par kao😀). Unescape prihvata tekst sa dvostrukim navodnicima ili bez njih i toleriše sirove prelome redova. - JavaScript string (‘…’): izbegava kosu crtu unazad, apostrof, prelome redova i kontrolne znakove, plus U+2028 i U+2029, koji kvare starije mehanizme. Unescape razume
\x41,A,\u{1F600}, stare oktalne sekvence kao\101i nastavke reda. - JavaScript šablonski literal (`…`): izbegava obrnute apostrofe, kose crte unazad i
${da se nijedan izraz ne izračuna; prelomi redova i tabulatori ostaju kakvi jesu, jer ih šablonski literali dozvoljavaju. - SQL string literal (‘…’): udvostručuje apostrofe (
O'Brien→'O''Brien'), kao u standardnom SQL-u. Unescape odbija apostrof koji nije udvostručen. Kose crte unazad se ne diraju: MySQL u podrazumevanom režimu i\tretira kao escape znak, pa proveri pravila svoje baze. - CSV polje (RFC 4180): stavlja polje pod dvostruke navodnike i udvostručuje unutrašnje navodnike kada sadrži zarez, tačku-zarez, tabulator, navodnik, prelom reda ili razmak na početku/kraju. Dodaj okolne navodnike nameće navodnike.
- Vrednost HTML atributa: zamenjuje
&,<,>,"i'entitetima, što je bezbedno u atributima pod jednostrukim i dvostrukim navodnicima. Unescape dekodira numeričke reference i&,<,>,",'i . - Regularni izraz (doslovni tekst): ispred
. * + ? ^ $ { } ( ) | [ ] \ /stavlja kosu crtu unazad, a isto radi sa prelomima redova i tabulatorima, pa obrazac poklapa tekst doslovno. Rezultat je ispravan sa zastavicomui bez nje. - Komponenta URL-a (procentno kodiranje): radi kao
encodeURIComponent, kodira sve osim slova, cifara i- _ . ! ~ * ' ( )kao UTF-8 bajtove. Razmaci kao + (podaci obrasca) koristi konvencijuapplication/x-www-form-urlencoded.
Escape nije bezbednosna granica za SQL
Kada izabereš SQL, alat prikazuje podsetnik, i vredi ga ponoviti: pravo rešenje protiv SQL injekcije je parametrizovan upit (prepared statement), u kojem se vrednost šalje odvojeno od SQL teksta. Ručni escape je krhak: zavisi od baze, skupa znakova veze i podešavanja kao što je obrada kose crte unazad u MySQL-u. Koristi ovaj rezultat za čitanje logova, pisanje test podataka ili otklanjanje grešaka u upitu, nikada za pravljenje upita od korisničkog unosa.
Za CSV alat takođe upozorava kada vrednost počinje znakom =, +, - ili @: tabela je može izvršiti kao formulu (CSV injekcija). Navodnici to ne sprečavaju; uobičajena zaštita je da se ispred vrednosti stavi apostrof ili razmak.
Česta pitanja
Koja je razlika između JSON stringa i JavaScript stringa?
JSON dozvoljava samo dvostruke navodnike i mali skup escape sekvenci (\" \\ \/ \b \f \n \r \t \uXXXX). JavaScript prihvata i jednostruke navodnike, obrnute apostrofe, \x41, \u{…}, \v i \0. Ispravne JSON sekvence su ispravne i u JavaScript-u, ali ne i obrnuto.
Zašto unescape ne uspeva sa „Neispravna escape sekvenca“?
Tekst sadrži kosu crtu unazad iza koje stoji nešto što format ne dozvoljava, kao \u12 sa manje od četiri heksadecimalne cifre, ili usamljenu kosu crtu na kraju. Poruka o grešci prikazuje neispravnu sekvencu.
Da li CSV traži navodnike oko svakog polja?
Ne. RFC 4180 traži navodnike samo kada polje sadrži zarez, dvostruki navodnik ili prelom reda. Ovaj alat pod navodnike stavlja i tačke-zarez, tabulatore i razmake na početku ili kraju, jer ih mnoge tabele koriste kao razdvajače ili ih odsecaju.
Da li je escape za HTML atribut dovoljan da spreči XSS?
Ispravan je za tekst unutar vrednosti atributa pod navodnicima. Nije dovoljan za atribute koji su sami kod ili URL adrese, kao onclick ili href="javascript:…"; njima treba validacija, a ne samo escape.
Da li se moj tekst šalje na server?
Ne. Sve konverzije se izvršavaju lokalno u tvom pregledaču, pa bezbedno možeš da nalepiš vrednosti iz konfiguracije ili podatke koje ne bi delio.
Srodni alati
- URL koder i dekoder Besplatan URL koder i dekoder. Procentno kodiraj parametre upita ili cele adrese, dekodiraj %XX sekvence i tretiraj + kao razmak. Radi u pregledaču.
- HTML entiteti: kodiranje i dekodiranje Zameni specijalne znake HTML entitetima (imenovanim, decimalnim ili heksadecimalnim) ili dekodiraj bilo koji entitet, uz svih 2.231 HTML5 imenovanih referenci.
- JSON formater i validator Besplatan JSON formater i validator koji sređuje, minifikuje i proverava JSON u pregledaču, sa sintaksnim greškama prijavljenim po redu i koloni.
- Regex tester Testiraj JavaScript regularne izraze uživo: istaknuta poklapanja, grupe za hvatanje, zamena i objašnjenje svakog tokena običnim jezikom.