Mcatorce Suite
← Volver al blog

Cómo escapar cadenas para JSON, JavaScript, shell y SQL (y por qué cada uno es distinto)

Guía comparada para escapar texto en JSON, JavaScript, comandos de shell y SQL, con los caracteres que requieren cuidado en cada caso y los errores que evitan.

Prueba la herramienta: Escapador de Cadenas

Escapar significa escribir un carácter especial de forma que el lenguaje de destino lo lea como texto normal. El problema es que cada lenguaje tiene su propia lista de caracteres especiales, así que una cadena segura en un lugar se rompe en otro.

JSON

Las cadenas JSON usan comillas dobles. Dentro debes escapar la comilla doble (\"), la barra invertida (\\) y los caracteres de control como el salto de línea (\n), el tabulador (\t) y el retorno de carro (\r). Los demás caracteres de control usan \uXXXX. Las comillas simples no necesitan escape, y la barra normal puede escribirse \/ pero no es obligatorio.

JavaScript

Las cadenas de JavaScript aceptan los mismos escapes que JSON, más \' para cadenas con comillas simples y las comillas invertidas en las plantillas literales. Recuerda que en una plantilla literal ${ inicia una expresión, así que un ${ literal necesita una barra invertida. En código incrustado en un <script> de HTML, la secuencia </script> también requiere cuidado.

Shell

En los shells POSIX, la forma más segura de pasar texto arbitrario son las comillas simples, que lo tratan todo de forma literal. El único carácter que no puedes poner dentro de comillas simples es la propia comilla simple, que se escribe cerrando la comilla, añadiendo \' y reabriéndola: 'it'\''s'. Las comillas dobles siguen expandiendo $, las comillas invertidas y \, una fuente común de sorpresas.

SQL

En SQL estándar una comilla simple dentro de una cadena se duplica ('O''Brien'). Algunas bases de datos también admiten escapes con barra invertida, pero el comportamiento varía según el motor y la configuración.

Importante: escapar a mano no es la defensa correcta contra la inyección SQL. Usa consultas parametrizadas para que los datos nunca se mezclen con el texto de la consulta. Un escapador sirve para scripts puntuales y depuración, no para construir consultas con datos del usuario.

Escapes estilo C

C, Java y muchos otros lenguajes usan \n, \t, \\, \" y \xNN o \uNNNN para otros caracteres.

Preguntas frecuentes

¿Por qué mi texto tiene barras invertidas dobles? Las barras invertidas también son especiales, así que cada una real se escribe dos veces. Al desescapar se revierte.