Utilia

Teksto simbolių pabėgimas ir atstatymas

Paversk tekstą pabėgimo seka arba atstatyk jį JSON, JavaScript, SQL, CSV, HTML atributams, reguliariosioms išraiškoms ir URL tiesiai naršyklėje.

Kaip paversti eilutę pabėgimo seka ar atstatyti

  1. Pasirink paskirtį laukelyje Formatas: JSON eilutė, JavaScript eilutė, JavaScript šablono literalas, SQL eilutės literalas, CSV laukas, HTML atributo reikšmė, reguliarioji išraiška arba URL dalis.
  2. Įrašyk arba įklijuok tekstą į įvesties langelį.
  3. Spustelėk Paversti pabėgimo seka, kad paprastą tekstą paverstum saugiu literalu, arba Atstatyti, kad literalą grąžintum į paprastą tekstą. Rezultatas atsinaujina, kai renki, paskutinio pasirinkimo kryptimi.
  4. Pakoreguok formatui rodomus nustatymus: Pridėti apgaubiančias kabutes, Pabėgti ne ASCII simboliams arba Tarpai kaip + (formos duomenys).
  5. Spustelėk Kopijuoti arba Išvestį naudoti kaip įvestį, kad apgręžtum operaciją ir patikrintum atvirkštinį kelią.

Simbolių skaičius prieš ir po rodomas po mygtukais. Viskas vyksta tavo naršyklėje; nieko neįkeliama.

Ką daro kiekvienas formatas

  • JSON eilutė: paverčia pabėgimo seka ", \ ir valdymo simbolius (\n, \t, \u0000…), lygiai kaip JSON.stringify. Su Pabėgti ne ASCII simboliams kiekvienas simbolis virš U+007E tampa \uXXXX (jaustukai tampa pakaitinių simbolių pora, pavyzdžiui, 😀). Atstatant priimamas tekstas su dvigubomis kabutėmis arba be jų, toleruojami ir tikri eilučių lūžiai.
  • JavaScript eilutė (‘…’): paverčia pabėgimo seka atvirkštinį pasvirąjį brūkšnį, apostrofą, eilučių lūžius ir valdymo simbolius, taip pat U+2028 ir U+2029, kurie sugadina senesnius variklius. Atstatant suprantami \x41, A, \u{1F600}, senieji aštuntainiai pabėgimai, pavyzdžiui, \101, ir eilučių tęsiniai.
  • JavaScript šablono literalas (`…`): paverčia pabėgimo seka atvirkštines kabutes, atvirkštinį pasvirąjį brūkšnį ir ${, kad nebūtų vykdoma jokia išraiška; eilučių lūžiai ir tabuliacijos lieka kaip yra, nes šablonų literalai juos leidžia.
  • SQL eilutės literalas (‘…’): padvigubina apostrofus (O'Brien → 'O''Brien'), kaip standartiniame SQL. Atstatant atmetama nepadvigubinta apostrofa. Atvirkštiniai pasvirieji brūkšniai paliekami: MySQL numatytuoju režimu \ taip pat laiko pabėgimo simboliu, todėl patikrink savo duomenų bazės taisykles.
  • CSV laukas (RFC 4180): apgaubia lauką dvigubomis kabutėmis ir padvigubina vidines kabutes, kai jame yra kablelis, kabliataškis, tabuliacija, kabutė, eilutės lūžis ar pradžioje ar gale esantis tarpas. Pridėti apgaubiančias kabutes kabutes primeta.
  • HTML atributo reikšmė: keičia &, <, >, " ir ' esybėmis, o tai saugu ir viengubomis, ir dvigubomis kabutėmis apgaubtuose atributuose. Atstatant dekoduojamos skaitinės nuorodos ir &amp;, &lt;, &gt;, &quot;, &apos; bei &nbsp;.
  • Reguliarioji išraiška (pažodinis tekstas): prieš kiekvieną iš šių simbolių deda atvirkštinį pasvirąjį brūkšnį: . * + ? ^ $ { } ( ) | [ ] \ /, taip pat eilučių lūžius ir tabuliacijas, kad šablonas atitiktų tekstą pažodžiui. Rezultatas tinka su u vėliavėle ir be jos.
  • URL dalis (procentinis kodavimas): veikia kaip encodeURIComponent, koduodamas viską, išskyrus raides, skaitmenis ir - _ . ! ~ * ' ( ), kaip UTF-8 baitus. Tarpai kaip + (formos duomenys) naudoja application/x-www-form-urlencoded konvenciją.

Pabėgimo sekos nėra saugumo riba SQL atveju

Pasirinkus SQL, įrankis rodo priminimą, kurį verta pakartoti: tikras SQL injekcijos sprendimas yra parametrizuota užklausa (parengtas sakinys), kai reikšmė siunčiama atskirai nuo SQL teksto. Rankinis pabėgimas yra trapus: jis priklauso nuo duomenų bazės, ryšio simbolių rinkinio ir nustatymų, tokių kaip MySQL atvirkštinio pasvirojo brūkšnio tvarkymas. Šią išvestį naudok žurnalams skaityti, testiniams duomenims rašyti ar užklausai derinti, niekada ne užklausoms iš naudotojo įvesties kurti.

CSV atveju įrankis taip pat įspėja, kai reikšmė prasideda =, +, - ar @: skaičiuoklė gali ją vykdyti kaip formulę (CSV injekcija). Kabutės to neapsaugo; įprasta apsauga – prieš reikšmę įrašyti apostrofą ar tarpą.

Dažnai užduodami klausimai

Kuo skiriasi JSON eilutė nuo JavaScript eilutės?

JSON leidžia tik dvigubas kabutes ir nedidelį pabėgimų rinkinį (\" \\ \/ \b \f \n \r \t \uXXXX). JavaScript taip pat priima apostrofus, atvirkštines kabutes, \x41, \u{…}, \v ir \0. Tinkami JSON pabėgimai tinka ir JavaScript, bet ne atvirkščiai.

Kodėl atstatant gaunu „netinkama pabėgimo seka“?

Tekste yra atvirkštinis pasvirasis brūkšnys, po kurio eina tai, ko formatas neleidžia, pavyzdžiui, \u12 su mažiau nei keturiais šešioliktainiais skaitmenimis arba pavienis brūkšnys pabaigoje. Klaidos pranešime rodoma klaidinga seka.

Ar CSV reikia kabučių aplink kiekvieną lauką?

Ne. RFC 4180 reikalauja kabučių tik tada, kai lauke yra kablelis, dvigubos kabutės ar eilutės lūžis. Šis įrankis kabutes deda ir aplink kabliataškius, tabuliacijas bei pradžioje ar gale esančius tarpus, nes daugelis skaičiuoklių juos naudoja kaip skirtukus arba nukerpa.

Ar HTML atributo pabėgimo pakanka XSS apsaugai?

Jis teisingas tekstui, esančiam kabutėmis apgaubtoje atributo reikšmėje. Jo nepakanka atributams, kurie patys yra kodas ar URL, pavyzdžiui, onclick ar href="javascript:…"; jiems reikia tikrinimo, o ne vien pabėgimo.

Ar mano tekstas siunčiamas į serverį?

Ne. Visi konvertavimai vyksta vietoje tavo naršyklėje, todėl gali saugiai įklijuoti konfigūracijos reikšmes ar duomenis, kurių nesidalytum.