Utilia

Escapa och avescapa strängar

Escapa eller avescapa en sträng för JSON, JavaScript, mallsträngar, SQL, CSV, HTML-attribut, reguljära uttryck och URL:er, direkt i din webbläsare.

Så escapar eller avescapar du en sträng

  1. Välj mål under Format: JSON-sträng, JavaScript-sträng, JavaScript-mallsträng, SQL-strängliteral, CSV-fält, HTML-attributvärde, reguljärt uttryck eller URL-komponent.
  2. Skriv eller klistra in din text i indatarutan.
  3. Klicka på Escapa för att göra om vanlig text till en säker literal, eller på Avescapa för att göra om en literal till vanlig text igen. Resultatet uppdateras medan du skriver, i den riktning du senast valde.
  4. Justera de alternativ som visas för formatet: Lägg till omgivande citattecken, Escapa tecken utanför ASCII eller Mellanslag som + (formulärdata).
  5. Klicka på Kopiera, eller på Använd resultatet som indata för att vända på operationen och kontrollera att du får tillbaka originalet.

Antalet tecken före och efter visas under knapparna. Allt körs i din webbläsare och inget laddas upp.

Vad varje format gör

  • JSON-sträng: escapar ", \ och styrtecken (\n, \t, \u0000 …), precis som JSON.stringify. Med Escapa tecken utanför ASCII blir varje tecken över U+007E till \uXXXX, så att å blir å (emoji blir ett surrogatpar som 😀). Vid avescapning godtas texten med eller utan sina dubbla citattecken, och råa radbrytningar tolereras.
  • JavaScript-sträng (‘…’): escapar omvänt snedstreck, enkla citattecken, radbrytningar och styrtecken, samt U+2028 och U+2029, som får äldre motorer att krascha. Avescapningen förstår \x41, A, \u{1F600}, äldre oktala escape-sekvenser som \101 och radfortsättningar.
  • JavaScript-mallsträng (`…`): escapar backticks, omvända snedstreck och ${ så att inget uttryck utvärderas. Radbrytningar och tabbar lämnas som de är, eftersom mallsträngar tillåter dem.
  • SQL-strängliteral (‘…’): dubblerar enkla citattecken (O'Brien → 'O''Brien'), som i standard-SQL. Avescapningen avvisar ett citattecken som inte är dubblerat. Omvända snedstreck lämnas orörda: MySQL behandlar i standardläget även \ som escape-tecken, så kontrollera din databas regler.
  • CSV-fält (RFC 4180): omsluter fältet med dubbla citattecken och dubblerar citattecken inuti när det innehåller komma, semikolon, tabb, citattecken, radbrytning eller inledande/avslutande mellanslag. Lägg till omgivande citattecken tvingar fram citattecknen.
  • HTML-attributvärde: ersätter &, <, >, " och ' med entiteter, vilket är säkert i attribut med både enkla och dubbla citattecken. Avescapningen avkodar numeriska referenser och &amp;, &lt;, &gt;, &quot;, &apos; och &nbsp;.
  • Reguljärt uttryck (literal text): sätter omvänt snedstreck före . * + ? ^ $ { } ( ) | [ ] \ / samt radbrytningar och tabbar, så att mönstret matchar texten bokstavligt. Resultatet är giltigt med eller utan flaggan u.
  • URL-komponent (procentkodning): fungerar som encodeURIComponent och kodar allt utom bokstäver, siffror och - _ . ! ~ * ' ( ) som UTF-8-byte, så att ö blir %C3%B6. Mellanslag som + (formulärdata) använder konventionen för application/x-www-form-urlencoded.

Escapning är inget säkerhetsskydd för SQL

När du väljer SQL visar verktyget en påminnelse, och den tål att upprepas: det verkliga skyddet mot SQL-injektion är en parametriserad fråga (prepared statement), där värdet skickas separat från SQL-texten. Att escapa för hand är bräckligt: det beror på databasen, anslutningens teckenuppsättning och inställningar som MySQL:s hantering av omvänt snedstreck. Använd resultatet för att läsa loggar, skriva testdata eller felsöka en fråga, aldrig för att bygga frågor av användarindata.

För CSV varnar verktyget också när ett värde börjar med =, +, - eller @: ett kalkylprogram kan köra det som en formel (CSV-injektion). Citattecken förhindrar inte det. Den vanliga motåtgärden är att inleda värdet med en apostrof eller ett mellanslag.

Vanliga frågor

Vad är skillnaden mellan en JSON-sträng och en JavaScript-sträng?

JSON tillåter bara dubbla citattecken och en liten uppsättning escape-sekvenser (\" \\ \/ \b \f \n \r \t \uXXXX). JavaScript godtar även enkla citattecken, backticks, \x41, \u{…}, \v och \0. Giltiga JSON-sekvenser är giltig JavaScript, men inte tvärtom.

Varför misslyckas avescapningen med ”Ogiltig escape-sekvens”?

Texten innehåller ett omvänt snedstreck följt av något som formatet inte tillåter, som \u12 med färre än fyra hexsiffror, eller ett ensamt omvänt snedstreck i slutet. Felmeddelandet visar den felaktiga sekvensen.

Behöver varje CSV-fält citattecken?

Nej. RFC 4180 kräver bara citattecken när fältet innehåller komma, dubbla citattecken eller radbrytning. Verktyget sätter också citattecken kring semikolon, tabbar och inledande eller avslutande mellanslag, eftersom många kalkylprogram – till exempel Excel med svenska inställningar, där semikolon är avgränsare – använder dem som avgränsare eller tar bort dem.

Räcker HTML-attributescapningen för att förhindra XSS?

Den är korrekt för text som placeras inuti ett attributvärde inom citattecken. Den räcker inte för attribut som själva är kod eller URL:er, som onclick eller href="javascript:…". De kräver validering, inte bara escapning.

Skickas min text till en server?

Nej. Alla konverteringar körs lokalt i din webbläsare, så du kan tryggt klistra in konfigurationsvärden eller data som du inte vill dela.