Escape i unescape teksta
Escape ili unescape teksta za JSON, JavaScript, template literale, SQL, CSV, HTML atribute, regularne izraze i URL-ove, direktno u tvom pregledniku.
Escape nije zamjena za parametrizovane upite (prepared statements). Ovaj izlaz koristi za čitanje ili otklanjanje grešaka u SQL-u, nikada za izradu upita od korisničkog unosa.
Kako uraditi escape ili unescape teksta
- Odaberi cilj u polju Format: JSON string, JavaScript string, JavaScript template literal, SQL string literal, CSV polje, vrijednost HTML atributa, regularni izraz ili dio URL-a.
- Upiši ili zalijepi tekst u polje za unos.
- Klikni na Escape da običan tekst pretvoriš u siguran literal ili na Unescape da literal vratiš u običan tekst. Rezultat se osvježava dok pišeš, u smjeru koji si zadnji odabrao.
- Podesi opcije prikazane za taj format: Dodaj okolne navodnike, Escape znakova koji nisu ASCII ili Razmaci kao + (podaci obrasca).
- Klikni na Kopiraj ili na Koristi izlaz kao ulaz da obrneš operaciju i provjeriš kružni tok.
Broj znakova prije i poslije prikazan je ispod dugmadi. Sve radi u tvom pregledniku; ništa se ne šalje na server.
Šta radi svaki format
- JSON string: izbjegava
",\i kontrolne znakove (\n,\t,\u0000…), tačno kaoJSON.stringify. Uz Escape znakova koji nisu ASCII, svaki znak iznad U+007E postaje\uXXXX(emoji postaju surogatni par poput😀). Unescape prihvata tekst sa ili bez dvostrukih navodnika i toleriše sirove prelome redova. - JavaScript string (‘…’): izbjegava obrnutu kosu crtu, jednostruki navodnik, prelome redova i kontrolne znakove, te U+2028 i U+2029, koji kvare starije pogone. Unescape razumije
\x41,A,\u{1F600}, naslijeđene oktalne sekvence poput\101i nastavke redova. - JavaScript template literal (`…`): izbjegava obrnute apostrofe, obrnute kose crte i
${, pa se nijedan izraz ne izračunava; prelomi redova i tabulatori ostaju kakvi jesu, jer ih template literali dopuštaju. - SQL string literal (‘…’): udvostručuje jednostruke navodnike (
O'Brien→'O''Brien'), kao u standardnom SQL-u. Unescape odbija navodnik koji nije udvostručen. Obrnute kose crte se ne diraju: MySQL u zadanom načinu rada također tretira\kao escape znak, pa provjeri pravila svoje baze. - CSV polje (RFC 4180): stavlja polje pod dvostruke navodnike i udvostručuje unutarnje navodnike kada sadrži zarez, tačku-zarez, tabulator, navodnik, prelom reda ili vodeći/završni razmak. Dodaj okolne navodnike nameće navodnike.
- Vrijednost HTML atributa: zamjenjuje
&,<,>,"i'entitetima, što je sigurno u atributima pod jednostrukim i dvostrukim navodnicima. Unescape dekodira numeričke reference te&,<,>,",'i . - Regularni izraz (doslovni tekst): obrnutom kosom crtom izbjegava
. * + ? ^ $ { } ( ) | [ ] \ /, te prelome redova i tabulatore, da se uzorak podudara s tekstom doslovno. Rezultat je ispravan sa zastavicomui bez nje. - Dio URL-a (postotno kodiranje): radi kao
encodeURIComponenti kodira sve osim slova, cifara i znakova- _ . ! ~ * ' ( )kao UTF-8 bajtove. Razmaci kao + (podaci obrasca) koristi konvencijuapplication/x-www-form-urlencoded.
Escape nije sigurnosna granica za SQL
Kada odabereš SQL, alat prikazuje podsjetnik koji vrijedi ponoviti: pravi lijek za SQL injection je parametrizovani upit (prepared statement), u kojem se vrijednost šalje odvojeno od SQL teksta. Ručni escape je krhak: zavisi od baze, skupa znakova veze i postavki poput načina na koji MySQL tretira obrnutu kosu crtu. Ovaj izlaz koristi za čitanje logova, pisanje testnih podataka ili otklanjanje grešaka u upitu, nikada za izradu upita od korisničkog unosa.
Za CSV alat također upozorava kada vrijednost počinje znakom =, +, - ili @: tabelarni program je može izvršiti kao formulu (CSV injection). Navodnici to ne sprečavaju; uobičajena zaštita je da se ispred vrijednosti stavi apostrof ili razmak.
Česta pitanja
Koja je razlika između JSON stringa i JavaScript stringa?
JSON dopušta 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 JavaScriptu, ali obrnuto ne vrijedi.
Zašto unescape ne uspijeva s porukom „neispravna escape sekvenca“?
Tekst sadrži obrnutu kosu crtu iza koje slijedi nešto što format ne dozvoljava, na primjer \u12 s manje od četiri heksadecimalne cifre ili samotnu obrnutu kosu crtu na kraju. Poruka o grešci prikazuje neispravnu sekvencu.
Treba li CSV navodnike oko svakog polja?
Ne. RFC 4180 traži navodnike samo kada polje sadrži zarez, dvostruki navodnik ili prelom reda. Ovaj alat stavlja navodnike i oko tačke-zareza, tabulatora te vodećih ili završnih razmaka, jer ih mnogi tabelarni programi koriste kao separatore ili ih skraćuju.
Je li escape HTML atributa dovoljan za sprečavanje XSS-a?
Ispravan je za tekst koji se stavlja unutar vrijednosti atributa pod navodnicima. Nije dovoljan za atribute koji su sami kod ili URL-ovi, poput onclick ili href="javascript:…"; za njih je potrebna validacija, a ne samo escape.
Šalje li se moj tekst na server?
Ne. Sve konverzije rade lokalno u tvom pregledniku, pa možeš sigurno zalijepiti konfiguracijske vrijednosti ili podatke koje ne bi dijelio.
Srodni alati
- URL kodiranje i dekodiranje Besplatno URL kodiranje i dekodiranje. Postotno kodiraj parametre upita ili cijele URL-ove, dekodiraj %XX sekvence i tretiraj + kao razmak. Radi u pregledniku.
- HTML entiteti: koder i dekoder Zamijeni posebne znakove HTML entitetima (imenovanim, decimalnim ili heks) ili dekodiraj bilo koji entitet pomoću pune liste od 2.231 HTML5 imena.
- JSON formater i validator Besplatan JSON formater i validator koji uljepšava, minifikuje i provjerava JSON u pregledniku, a sintaksne greške prijavljuje s redom i kolonom.
- Regex tester Testiraj JavaScript regularne izraze uživo s označenim podudaranjima, grupama za hvatanje, zamjenom i objašnjenjem svakog elementa uzorka na običnom jeziku.