Utilia

Escape i unescape znakovnih nizova

Escape ili unescape znakovnog niza za JSON, JavaScript, predloške, SQL, CSV, HTML atribute, regularne izraze i URL-ove, izravno u tvom pregledniku.

Kako napraviti escape ili unescape niza

  1. Odaberi odredište u Format: JSON niz, JavaScript niz, JavaScript predložak, SQL znakovni literal, CSV polje, vrijednost HTML atributa, regularni izraz ili URL komponenta.
  2. Upiši ili zalijepi tekst u polje za unos.
  3. Klikni Escape da obični tekst pretvoriš u siguran literal ili Unescape da literal vratiš u obični tekst. Rezultat se ažurira dok tipkaš, u smjeru koji si zadnji odabrao.
  4. Prilagodi opcije prikazane za format: Dodaj okolne navodnike, Escape znakova izvan ASCII-ja ili Razmaci kao + (podaci obrasca).
  5. Klikni Kopiraj ili Koristi izlaz kao ulaz da obrneš operaciju i provjeriš povratni krug.

Broj znakova prije i poslije prikazan je ispod gumba. Sve se izvodi u tvom pregledniku; ništa se ne šalje.

Što radi koji format

  • JSON niz: izbjegava ", \ i kontrolne znakove (\n, \t, \u0000…), točno kao JSON.stringify. Uz Escape znakova izvan ASCII-ja svaki znak iznad U+007E postaje \uXXXX (emojiji postaju surogatni par poput 😀). Unescape prihvaća tekst sa ili bez dvostrukih navodnika i tolerira sirove prijelome redaka.
  • JavaScript niz (‘…’): izbjegava obrnutu kosu crtu, jednostruki navodnik, prijelome redaka i kontrolne znakove, plus U+2028 i U+2029, koji kvare starije mehanizme. Unescape razumije \x41, A, \u{1F600}, naslijeđene oktalne nizove poput \101 i nastavke redaka.
  • JavaScript predložak (`…`): izbjegava obrnute jednostruke navodnike, obrnute kose crte i ${ da se nijedan izraz ne izračuna; prijelomi redaka i tabulatori ostaju kakvi jesu jer ih predlošci dopuštaju.
  • SQL znakovni literal (‘…’): udvostručuje jednostruke navodnike (O'Brien → 'O''Brien'), kao u standardnom SQL-u. Unescape odbija navodnik koji nije udvostručen. Obrnute kose crte ostavljaju se netaknute: MySQL u zadanom načinu rada također tretira \ kao escape znak, pa provjeri pravila svoje baze.
  • CSV polje (RFC 4180): stavlja polje u dvostruke navodnike i udvostručuje unutarnje navodnike kad sadrži zarez, točku sa zarezom, tabulator, navodnik, prijelom retka ili razmak na početku/kraju. Dodaj okolne navodnike prisiljava navodnike.
  • Vrijednost HTML atributa: zamjenjuje &, <, >, " i ' entitetima, što je sigurno u atributima s jednostrukim i dvostrukim navodnicima. Unescape dekodira numeričke reference te &amp;, &lt;, &gt;, &quot;, &apos; i &nbsp;.
  • Regularni izraz (doslovni tekst): izbjegava obrnutom kosom crtom . * + ? ^ $ { } ( ) | [ ] \ /, plus prijelome redaka i tabulatore, da se uzorak podudara s tekstom doslovno. Rezultat je ispravan sa zastavicom u i bez nje.
  • URL komponenta (postotno kodiranje): radi kao encodeURIComponent, kodirajući sve osim slova, znamenki i - _ . ! ~ * ' ( ) kao UTF-8 bajtove. Razmaci kao + (podaci obrasca) koristi konvenciju application/x-www-form-urlencoded.

Escape nije sigurnosna granica za SQL

Kad odabereš SQL, alat prikazuje podsjetnik koji vrijedi ponoviti: pravo rješenje za SQL injection je parametrizirani upit (prepared statement), kod kojeg se vrijednost šalje odvojeno od SQL teksta. Ručni escape je krhak: ovisi o bazi, skupu znakova veze i postavkama poput MySQL-ova rukovanja obrnutom kosom crtom. Koristi ovaj izlaz za čitanje dnevnika, pisanje testnih podataka ili otklanjanje pogrešaka u upitu, nikada za izgradnju upita iz korisničkog unosa.

Za CSV alat upozorava i kad vrijednost počinje znakom =, +, - ili @: proračunska tablica može je izvesti kao formulu (CSV injection). Navodnici to ne sprječavaju; uobičajena zaštita je dodati ispred vrijednosti apostrof ili razmak.

Česta pitanja

Koja je razlika između JSON niza i JavaScript niza?

JSON dopušta samo dvostruke navodnike i mali skup escape slijedova (\" \\ \/ \b \f \n \r \t \uXXXX). JavaScript prihvaća i jednostruke navodnike, obrnute jednostruke navodnike, \x41, \u{…}, \v i \0. Ispravni JSON escape slijedovi ispravni su u JavaScriptu, ali obrnuto ne vrijedi.

Zašto unescape ne uspijeva s porukom „neispravan escape slijed“?

Tekst sadrži obrnutu kosu crtu iza koje slijedi nešto što format ne dopušta, na primjer \u12 s manje od četiri heksadecimalne znamenke ili završnu samostalnu obrnutu kosu crtu. Poruka o pogrešci prikazuje neispravan slijed.

Treba li CSV navodnike oko svakog polja?

Ne. RFC 4180 zahtijeva navodnike samo kad polje sadrži zarez, dvostruki navodnik ili prijelom retka. Ovaj alat stavlja navodnike i oko točaka sa zarezom, tabulatora te razmaka na početku ili kraju, jer ih mnoge proračunske tablice koriste kao razdjelnike ili ih skraćuju.

Je li escape HTML atributa dovoljan za sprječavanje XSS-a?

Ispravan je za tekst unutar vrijednosti atributa u navodnicima. Nije dovoljan za atribute koji su sami kod ili URL-ovi, poput onclick ili href="javascript:…"; njima treba validacija, a ne samo escape.

Šalje li se moj tekst na poslužitelj?

Ne. Sve se pretvorbe izvode lokalno u tvom pregledniku, pa slobodno možeš zalijepiti konfiguracijske vrijednosti ili podatke koje ne bi dijelio.