Utilia

Ескејпирање и деескејпирање на стринг

Ескејпирајте или деескејпирајте стринг за JSON, JavaScript, template literal, SQL, CSV, HTML атрибути, регуларни изрази и URL, директно во прелистувачот.

Како да ескејпирате или деескејпирате стринг

  1. Изберете цел во Формат: JSON стринг, JavaScript стринг, JavaScript template literal, SQL стринг литерал, CSV поле, вредност на HTML атрибут, регуларен израз или дел од URL.
  2. Впишете или залепете го вашиот текст во полето за внес.
  3. Кликнете Ескејпирај за да претворите обичен текст во безбеден литерал, или Деескејпирај за да го вратите литералот во обичен текст. Резултатот се ажурира додека пишувате, во насоката што последна сте ја избрале.
  4. Прилагодете ги опциите што се прикажуваат за форматот: Додај околни наводници, Ескејпирај не-ASCII знаци или Празни места како + (податоци од формулар).
  5. Кликнете Копирај или Користи го резултатот како внес за да ја свртите операцијата и да го проверите враќањето.

Бројот на знаци пред и по е прикажан под копчињата. Сè се извршува во вашиот прелистувач; ништо не се качува.

Што прави секој формат

  • JSON стринг: ескејпира ", \ и контролни знаци (\n, \t, \u0000…), точно како JSON.stringify. Со Ескејпирај не-ASCII знаци, секој знак над U+007E станува \uXXXX (емоџијата стануваат суррогатен пар како 😀). Деескејпирањето го прифаќа текстот со или без неговите двојни наводници и толерира сурови прекини на редови.
  • JavaScript стринг (‘…’): ги ескејпира обратната коса црта, единечниот наводник, прекините на редови и контролните знаци, плус U+2028 и U+2029, кои ги кршат постарите машини. Деескејпирањето ги разбира \x41, A, \u{1F600}, наследените октални низи како \101 и продолжувања на редови.
  • JavaScript template literal (`…`): ги ескејпира обратните наводници, обратните коси црти и ${ за да не се оцени ниту еден израз; прекините на редови и табулаторите остануваат како што се, бидејќи template literals ги дозволуваат.
  • SQL стринг литерал (‘…’): ги удвојува единечните наводници (O'Brien → 'O''Brien'), како во стандарден SQL. Деескејпирањето одбива наводник што не е удвоен. Обратните коси црти се оставаат: MySQL во основниот режим го третира и \ како escape знак, па проверете ги правилата на вашата база.
  • CSV поле (RFC 4180): го става полето во двојни наводници и ги удвојува внатрешните наводници кога содржи запирка, точка-запирка, табулатор, наводник, прекин на ред или празно место на почеток/крај. Додај околни наводници ги наметнува наводниците.
  • Вредност на HTML атрибут: ги заменува &, <, >, " и ' со ентитети, што е безбедно и во атрибути со единечни и со двојни наводници. Деескејпирањето ги декодира нумеричките референци и &amp;, &lt;, &gt;, &quot;, &apos; и &nbsp;.
  • Регуларен израз (литерален текст): ги ескејпира . * + ? ^ $ { } ( ) | [ ] \ / со обратна коса црта, плус прекини на редови и табулатори, па изразот го совпаѓа текстот буквално. Резултатот е важечки со или без знамето u.
  • Дел од URL (процентно кодирање): работи како encodeURIComponent, кодирајќи сè освен букви, цифри и - _ . ! ~ * ' ( ) како UTF-8 бајти. Празни места како + (податоци од формулар) ја користи конвенцијата application/x-www-form-urlencoded.

Ескејпирањето не е безбедносна граница за SQL

Кога ќе изберете SQL, алатката прикажува потсетник, и вреди да се повтори: вистинското решение за SQL injection е параметризирано барање (prepared statement), каде вредноста се испраќа одделно од SQL текстот. Рачното ескејпирање е кревко: зависи од базата, од знаковниот сет на врската и од поставки како обработката на обратни коси црти во MySQL. Користете го овој резултат за читање логови, пишување тест податоци или дебагирање барање, никогаш за градење барања од кориснички внес.

За CSV, алатката предупредува и кога вредноста почнува со =, +, - или @: табеларната пресметка може да ја изврши како формула (CSV injection). Наводниците тоа не го спречуваат; вообичаена заштита е вредноста да се префиксира со апостроф или празно место.

Често поставувани прашања

Која е разликата меѓу JSON стринг и JavaScript стринг?

JSON дозволува само двојни наводници и мал збир escape низи (\" \\ \/ \b \f \n \r \t \uXXXX). JavaScript прифаќа и единечни наводници, обратни наводници, \x41, \u{…}, \v и \0. Важечките JSON escape низи се важечки во JavaScript, но не и обратно.

Зошто деескејпирањето не успева со „неважечка escape низа“?

Текстот содржи обратна коса црта проследена со нешто што форматот не го дозволува, како \u12 со помалку од четири хекс цифри или самотна обратна коса црта на крајот. Пораката за грешка ја прикажува погрешната низа.

Дали CSV бара наводници околу секое поле?

Не. RFC 4180 бара наводници само кога полето содржи запирка, двоен наводник или прекин на ред. Оваа алатка ги става во наводници и точките-запирки, табулаторите и празните места на почеток или крај, бидејќи многу табеларни пресметки ги користат како разделувачи или ги скратуваат.

Дали ескејпирањето за HTML атрибут е доволно за спречување на XSS?

Точно е за текст сместен во вредност на атрибут во наводници. Не е доволно за атрибути што се самите код или URL, како onclick или href="javascript:…"; тие бараат валидација, не само ескејпирање.

Дали мојот текст се испраќа на сервер?

Не. Сите претворања се извршуваат локално во вашиот прелистувач, па безбедно можете да залепите конфигурациски вредности или податоци што не би ги споделиле.