Escape și unescape pentru șiruri
Aplică sau anulează escape-ul unui șir pentru JSON, JavaScript, șabloane literale, SQL, CSV, atribute HTML, expresii regulate și URL-uri, direct în browser.
Escape-ul nu înlocuiește interogările parametrizate (prepared statements). Folosește acest rezultat ca să citești sau să depanezi SQL, niciodată ca să construiești interogări din date introduse de utilizatori.
Cum aplici sau anulezi escape-ul unui șir
- Alege ținta în Format: șir JSON, șir JavaScript, șablon literal JavaScript, literal șir SQL, câmp CSV, valoare de atribut HTML, expresie regulată sau componentă URL.
- Scrie sau lipește textul în caseta de intrare.
- Apasă Escape ca să transformi textul simplu într-un literal sigur sau Unescape ca să transformi un literal înapoi în text simplu. Rezultatul se actualizează pe măsură ce scrii, în direcția aleasă ultima dată.
- Reglează opțiunile afișate pentru format: Adaugă ghilimele în jur, Escape pentru caracterele non-ASCII sau Spații ca + (date de formular).
- Apasă Copiază sau Folosește rezultatul ca intrare ca să inversezi operația și să verifici dus-întorsul.
Numărul de caractere înainte și după este afișat sub butoane. Totul rulează în browserul tău; nimic nu este încărcat.
Ce face fiecare format
- Șir JSON: aplică escape pentru
",\și caracterele de control (\n,\t,\u0000…), exact caJSON.stringify. Cu Escape pentru caracterele non-ASCII, fiecare caracter peste U+007E devine\uXXXX(emoji devin o pereche surogat, cum ar fi😀). Unescape acceptă textul cu sau fără ghilimelele duble și tolerează rupturile de rând brute. - Șir JavaScript (‘…’): aplică escape pentru bara oblică inversă, ghilimeaua simplă, rupturile de rând și caracterele de control, plus U+2028 și U+2029, care strică motoarele mai vechi. Unescape înțelege
\x41,A,\u{1F600}, secvențe octale vechi precum\101și continuările de linie. - Șablon literal JavaScript (`…`): aplică escape pentru backticks, bare oblice inverse și
${, astfel încât nicio expresie să nu fie evaluată; rupturile de rând și tabulatoarele rămân ca atare, deoarece șabloanele literale le permit. - Literal șir SQL (‘…’): dublează ghilimelele simple (
O'Brien→'O''Brien'), ca în SQL standard. Unescape refuză o ghilimea care nu este dublată. Barele oblice inverse sunt lăsate neatinse: MySQL în modul implicit tratează și\drept caracter de escape, deci verifică regulile bazei tale de date. - Câmp CSV (RFC 4180): pune câmpul între ghilimele duble și dublează ghilimelele interioare când conține virgulă, punct și virgulă, tabulator, ghilimea, ruptură de rând sau spațiu la început ori la sfârșit. Adaugă ghilimele în jur forțează ghilimelele.
- Valoare de atribut HTML: înlocuiește
&,<,>,"și'cu entități, ceea ce este sigur atât în atribute cu ghilimele simple, cât și duble. Unescape decodează referințele numerice și&,<,>,",'și . - Expresie regulată (text literal): pune bară oblică inversă înaintea caracterelor
. * + ? ^ $ { } ( ) | [ ] \ /, plus rupturile de rând și tabulatoarele, astfel încât modelul să potrivească textul literal. Rezultatul este valid cu sau fără fanionulu. - Componentă URL (codificare procentuală): funcționează ca
encodeURIComponent, codificând totul în afară de litere, cifre și- _ . ! ~ * ' ( )ca octeți UTF-8. Spații ca + (date de formular) folosește convențiaapplication/x-www-form-urlencoded.
Escape-ul nu este o barieră de securitate pentru SQL
Când alegi SQL, instrumentul afișează un memento, iar el merită repetat: remediul real împotriva injecției SQL este o interogare parametrizată (prepared statement), în care valoarea este trimisă separat de textul SQL. Escape-ul manual este fragil: depinde de baza de date, de setul de caractere al conexiunii și de setări precum tratarea barei oblice inverse în MySQL. Folosește acest rezultat ca să citești jurnale, să scrii date de test sau să depanezi o interogare, niciodată ca să construiești interogări din date introduse de utilizatori.
Pentru CSV, instrumentul avertizează și când o valoare începe cu =, +, - sau @: o foaie de calcul o poate rula ca formulă (injecție CSV). Ghilimelele nu previn asta; prefixarea valorii cu un apostrof sau cu un spațiu este remediul obișnuit.
Întrebări frecvente
Care este diferența dintre un șir JSON și un șir JavaScript?
JSON permite doar ghilimele duble și un set mic de secvențe de escape (\" \\ \/ \b \f \n \r \t \uXXXX). JavaScript acceptă și ghilimele simple, backticks, \x41, \u{…}, \v și \0. Escape-urile JSON valide sunt valide în JavaScript, dar invers nu.
De ce eșuează unescape cu „secvență de escape invalidă”?
Textul conține o bară oblică inversă urmată de ceva ce formatul nu permite, de exemplu \u12 cu mai puțin de patru cifre hexazecimale sau o bară oblică inversă singură la final. Mesajul de eroare arată secvența greșită.
Are CSV nevoie de ghilimele în jurul fiecărui câmp?
Nu. RFC 4180 cere ghilimele doar când câmpul conține virgulă, ghilimele duble sau ruptură de rând. Acest instrument pune ghilimele și pentru punct și virgulă, tabulatoare și spații la început sau la sfârșit, pentru că multe foi de calcul le folosesc drept delimitatori sau le taie.
Este escape-ul pentru atribute HTML suficient ca să prevină XSS?
Este corect pentru text plasat într-o valoare de atribut între ghilimele. Nu este suficient pentru atribute care sunt ele însele cod sau URL-uri, precum onclick sau href="javascript:…"; acelea au nevoie de validare, nu doar de escape.
Este textul meu trimis unui server?
Nu. Toate conversiile rulează local în browserul tău, așa că poți lipi fără grijă valori de configurare sau date pe care nu le-ai partaja.
Instrumente similare
- Codificare și decodare URL Codificare și decodare URL gratuită. Codifică procentual parametri sau URL-uri complete, decodează secvențe %XX și tratează + ca spațiu, în browserul tău.
- Codificare și decodificare entități HTML Convertește caracterele speciale în entități HTML (cu nume, zecimale sau hex) sau decodifică orice entitate, cu lista completă de 2.231 de referințe HTML5.
- Formatare și validare JSON Formatator și validator JSON gratuit, care înfrumusețează, minifică și verifică JSON în browser, cu erori de sintaxă raportate pe linie și coloană.
- Tester regex Testează expresii regulate JavaScript în timp real, cu potriviri evidențiate, grupuri de captură, înlocuire și explicația fiecărui element.