Vai al contenuto

Escape di stringhe

String Escaper

Applica e toglie l’escape delle stringhe secondo le regole di JSON, JavaScript, SQL, shell, CSV ed espressioni regolari.

Fa l’escape di un pezzo di testo perché lo si possa incollare dentro un letterale di stringa — in JSON, JavaScript, Python, Java, C#, SQL, un comando di shell, un campo CSV o un’espressione regolare — e lo riporta indietro. Ogni destinazione ha le sue regole, e le differenze fra loro sono esattamente il posto in cui vivono i bug di injection.

🔒 Funziona interamente nel tuo browserescapestringjsonshell
Regole
Direzione

RFC 8259: `\" \\ \/ \b \f \n \r \t` e `\uXXXX` per il resto. Niente `\'`, niente `\x`, niente `\0`.

Testo

Con escape

Ingresso

0 caratteri

Uscita

0 caratteri

Come si usa

  1. Scegliere il linguaggio di destinazione

    La nota sotto il selettore dice di che cosa quella destinazione fa davvero l’escape. JSON è più severo di JavaScript; un template literal ha due caratteri in più di cui preoccuparsi; la shell con apici singoli è un problema diverso dalla shell con virgolette doppie.

  2. Incollare il testo grezzo

    Gli a capo, le virgolette e i caratteri non ASCII sono tutti gestiti. Quello che esce è l’*interno* del letterale: le virgolette che lo circondano si mettono comunque a mano.

  3. Controllare «si inverte senza perdite»

    L’indicatore sotto l’uscita rifà l’unescape del risultato e lo confronta con quello che si è scritto. Se dice di no, per questa destinazione l’escape perde qualcosa e la stringa che si incolla non è la stringa che si aveva.

Domande frequenti

Fare l’escape rende sicuro il mio SQL?

No. Fare l’escape di un letterale non è la stessa cosa di una query parametrizzata, e questo strumento non può conoscere la modalità di quoting del proprio database, il suo set di caratteri, né sapere se il valore finisce in un posto in cui una virgoletta non è il delimitatore. Vanno usati i parametri legati; questo serve a leggere una query, non a costruirne una per la produzione.

Perché la modalità SQL non usa le barre rovesciate?

Perché lo SQL standard non ha l’escape con barra rovesciata: una virgoletta si scrive due volte. L’escape con barra rovesciata è un’estensione di MySQL, e il codice che la dà per scontata è l’origine di buona parte delle injection. Se serve il comportamento di MySQL, deve servire consapevolmente.

Che cosa fa la destinazione `\uXXXX`?

Trasforma ogni carattere non ASCII in un escape `\uXXXX`, coppie surrogate comprese. La sua direzione più utile è quella inversa: un file .properties o una riga di log che una catena solo-ASCII ha rovinato torna a leggersi con le lettere accentate quando se ne fa l’unescape.

La shell con apici singoli è davvero sicura per qualunque stringa?

Per la stringa in sé sì: dentro gli apici singoli POSIX niente ha significato, e una virgoletta si scrive `'\''`. Quello da cui non protegge è il programma che si sta chiamando e che interpreta l’argomento, o una shell che non è POSIX. È una regola di quoting, non una sandbox.

Può ricevere da

Dopo

Questi accettano ciò che produce questo strumento, così il risultato può passare direttamente.