Devi incorporare una stringa JSON dentro un'altra stringa JSON — magari un messaggio di log che contiene esso stesso un payload JSON. Oppure stai scrivendo un comando shell che include una stringa con virgolette al suo interno. Oppure stai costruendo un URL che deve trasportare un altro URL come parametro di query. Ognuna di queste situazioni richiede l'escaping: convertire caratteri che altrimenti verrebbero interpretati come sintassi in una forma trattata come dato letterale.
Contesti diversi fanno l'escaping in modo diverso. JSON escapa le virgolette con una barra rovesciata e rappresenta caratteri speciali come i ritorni a capo come \n. L'escaping della shell dipende da quale stile di quotatura stai usando. L'escaping URL codifica con percentuale i caratteri riservati in modo completamente diverso da entrambi gli altri due. Confondere questi metodi — applicare l'escaping JSON dove serviva l'escaping URL — produce un output che sembra quasi giusto e fallisce in modi confusi.
Il Problema del Doppio Escaping
Uno dei bug più comuni in questo ambito è il doppio escaping: una stringa viene escapata una volta dal tuo codice e di nuovo da una libreria o un framework che presume sia ancora grezza, trasformando una singola barra rovesciata in due e corrompendo silenziosamente i dati. Diagnosticare questo richiede di fare l'unescape passo dopo passo per vedere esattamente dove è stato introdotto il livello extra — tedioso da fare a mano, specialmente in una stringa lunga.
Escape e Unescape per Più Formati
Bellows include strumenti di escaping di stringhe che coprono i formati JSON, HTML e URL tra i suoi 41 strumenti per sviluppatori. Incolla una stringa grezza per vederla correttamente escapata per un dato contesto, oppure incolla una stringa escapata per vedere il valore grezzo originale.
Incorporare Stringhe Dentro Stringhe
Costruire un payload JSON che contiene esso stesso una stringa JSON come valore di un campo, o costruire un messaggio di log che deve includere in sicurezza input arbitrario dell'utente, richiedono entrambi un escaping corretto per evitare di corrompere la struttura esterna.
Diagnosticare Dati con Doppio Escaping
Quando una stringa sembra essere stata escapata più volte del dovuto, fare l'unescape strato per strato rivela esattamente dove è stata introdotta la codifica extra, che di solito è il modo più veloce per rintracciare il codice responsabile.