Utilia

Escapar i desescapar cadenes

Escapa o desescapa una cadena per a JSON, JavaScript, plantilles literals, SQL, CSV, atributs HTML, expressions regulars i URL, directament al navegador.

Com escapar o desescapar una cadena

  1. Tria la destinació a Format: cadena JSON, cadena JavaScript, plantilla literal JavaScript, literal de cadena SQL, camp CSV, valor d’atribut HTML, expressió regular o component d’URL.
  2. Escriu o enganxa el text al quadre d’entrada.
  3. Fes clic a Escapa per convertir text net en un literal segur, o a Desescapa per tornar un literal a text net. El resultat s’actualitza mentre escrius, en la direcció que has triat per últim cop.
  4. Ajusta les opcions que es mostren per al format: Afegeix cometes al voltant, Escapa els caràcters no ASCII o Espais com a + (dades de formulari).
  5. Fes clic a Copia, o a Fes servir la sortida com a entrada per invertir l’operació i comprovar el recorregut d’anada i tornada.

El recompte de caràcters d’abans i d’après es mostra sota els botons. Tot s’executa al teu navegador; no es puja res.

Què fa cada format

  • Cadena JSON: escapa ", \ i els caràcters de control (\n, \t, \u0000…), exactament com JSON.stringify. Amb Escapa els caràcters no ASCII, cada caràcter per sobre d’U+007E es converteix en \uXXXX (els emojis es converteixen en un parell de substituts, com 😀). En desescapar s’accepta el text amb o sense les cometes dobles, i es toleren els salts de línia directes.
  • Cadena JavaScript (‘…’): escapa la barra invertida, la cometa simple, els salts de línia i els caràcters de control, a més d’U+2028 i U+2029, que trenquen els motors més antics. En desescapar s’entenen \x41, A, \u{1F600}, els escapaments octals antics com \101 i les continuacions de línia.
  • Plantilla literal JavaScript (`…`): escapa els accents oberts, les barres invertides i ${ perquè no s’avaluï cap expressió; els salts de línia i els tabuladors es mantenen tal com són, ja que les plantilles literals els permeten.
  • Literal de cadena SQL (‘…’): dobla les cometes simples (O'Brien → 'O''Brien'), com a l’SQL estàndard. En desescapar es rebutja una cometa que no estigui doblada. Les barres invertides es deixen tal com són: MySQL, en el seu mode per defecte, també tracta \ com a caràcter d’escapament, de manera que consulta les regles de la teva base de dades.
  • Camp CSV (RFC 4180): envolta el camp amb cometes dobles i dobla les cometes interiors quan conté una coma, un punt i coma, un tabulador, una cometa, un salt de línia o un espai al principi o al final. Afegeix cometes al voltant força les cometes.
  • Valor d’atribut HTML: substitueix &, <, >, " i ' per entitats, cosa que és segura tant en atributs amb cometes simples com amb cometes dobles. En desescapar es descodifiquen les referències numèriques i &amp;, &lt;, &gt;, &quot;, &apos; i &nbsp;.
  • Expressió regular (text literal): escapa amb barra invertida . * + ? ^ $ { } ( ) | [ ] \ /, a més dels salts de línia i els tabuladors, de manera que el patró reconegui el text literalment. El resultat és vàlid amb o sense l’indicador u.
  • Component d’URL (codificació percentual): funciona com encodeURIComponent, codificant com a bytes UTF-8 tot excepte lletres, xifres i - _ . ! ~ * ' ( ). Espais com a + (dades de formulari) utilitza la convenció application/x-www-form-urlencoded.

Escapar no és una barrera de seguretat per a SQL

Quan tries SQL, l’eina mostra un recordatori que val la pena repetir: la solució real contra la injecció SQL és una consulta parametritzada (sentència preparada), on el valor s’envia per separat del text SQL. Escapar a mà és fràgil: depèn de la base de dades, del joc de caràcters de la connexió i de configuracions com el tractament de la barra invertida de MySQL. Fes servir aquesta sortida per llegir registres, escriure dades de prova o depurar una consulta, mai per construir consultes a partir de dades de l’usuari.

Per a CSV, l’eina també avisa quan un valor comença amb =, +, - o @: un full de càlcul el pot executar com una fórmula (injecció CSV). Posar cometes no ho evita; la mitigació habitual és prefixar el valor amb un apòstrof o un espai.

Preguntes freqüents

Quina diferència hi ha entre una cadena JSON i una cadena JavaScript?

JSON només permet cometes dobles i un petit conjunt d’escapaments (\" \\ \/ \b \f \n \r \t \uXXXX). JavaScript també accepta cometes simples, accents oberts, \x41, \u{…}, \v i \0. Els escapaments JSON vàlids són vàlids en JavaScript, però no a l’inrevés.

Per què desescapar falla amb «seqüència d'escapament no vàlida»?

El text conté una barra invertida seguida d’alguna cosa que el format no permet, com \u12 amb menys de quatre xifres hexadecimals, o una barra invertida final sola. El missatge d’error mostra la seqüència errònia.

El CSV necessita cometes al voltant de cada camp?

No. La RFC 4180 només exigeix cometes quan el camp conté una coma, unes cometes dobles o un salt de línia. Aquesta eina també posa cometes als punts i coma, als tabuladors i als espais al principi o al final, perquè molts fulls de càlcul els fan servir com a delimitadors o els retallen.

L'escapament d'atributs HTML n'hi ha prou per evitar XSS?

És correcte per al text col·locat dins d’un valor d’atribut entre cometes. No n’hi ha prou per als atributs que són codi o URL, com onclick o href="javascript:…"; aquests necessiten validació, no només escapament.

S'envia el meu text a un servidor?

No. Totes les conversions s’executen en local al teu navegador, de manera que pots enganxar sense por valors de configuració o dades que no compartiries.