Utilia

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.

Kako uraditi escape ili unescape teksta

  1. 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.
  2. Upiši ili zalijepi tekst u polje za unos.
  3. 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.
  4. Podesi opcije prikazane za taj format: Dodaj okolne navodnike, Escape znakova koji nisu ASCII ili Razmaci kao + (podaci obrasca).
  5. 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 kao JSON.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 \101 i 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 &amp;, &lt;, &gt;, &quot;, &apos; i &nbsp;.
  • Regularni izraz (doslovni tekst): obrnutom kosom crtom izbjegava . * + ? ^ $ { } ( ) | [ ] \ /, te prelome redova i tabulatore, da se uzorak podudara s tekstom doslovno. Rezultat je ispravan sa zastavicom u i bez nje.
  • Dio URL-a (postotno kodiranje): radi kao encodeURIComponent i kodira sve osim slova, cifara i znakova - _ . ! ~ * ' ( ) kao UTF-8 bajtove. Razmaci kao + (podaci obrasca) koristi konvenciju application/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.