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.
Escape nije zamjena za parametrizirane upite (prepared statements). Koristi ovaj izlaz za čitanje ili otklanjanje pogrešaka u SQL-u, nikada za izgradnju upita iz korisničkog unosa.
Kako napraviti escape ili unescape niza
- 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.
- Upiši ili zalijepi tekst u polje za unos.
- 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.
- Prilagodi opcije prikazane za format: Dodaj okolne navodnike, Escape znakova izvan ASCII-ja ili Razmaci kao + (podaci obrasca).
- 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 kaoJSON.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\101i 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&,<,>,",'i . - Regularni izraz (doslovni tekst): izbjegava obrnutom kosom crtom
. * + ? ^ $ { } ( ) | [ ] \ /, plus prijelome redaka i tabulatore, da se uzorak podudara s tekstom doslovno. Rezultat je ispravan sa zastavicomui 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 konvencijuapplication/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.
Slični alati
- URL kodiranje i dekodiranje Besplatno URL kodiranje i dekodiranje. Postotno kodiraj parametre upita ili cijele URL-ove, dekodiraj nizove %XX i tretiraj + kao razmak. Radi u pregledniku.
- HTML entiteti: koder i dekoder Zamijeni posebne znakove HTML entitetima (imenovanima, decimalnima ili hex) ili dekodiraj bilo koji entitet, uz cijeli popis od 2231 HTML5 imenovane reference.
- JSON formater i validator Besplatni JSON formater i validator koji uljepšava, minificira i provjerava JSON u pregledniku, a sintaksne greške prijavljuje s retkom i stupcem.
- Tester regularnih izraza Testiraj JavaScript regularne izraze uživo s istaknutim podudaranjima, skupinama koje hvataju, zamjenom i objašnjenjem svakog dijela uzorka na običnom jeziku.