Utilia

Virknes escape un unescape

Veiciet virknes escape vai unescape JSON, JavaScript, veidņu literāļiem, SQL, CSV, HTML atribūtiem, regulārām izteiksmēm un URL tieši savā pārlūkprogrammā.

Kā veikt virknes escape vai unescape

  1. Sadaļā Formāts izvēlieties mērķi: JSON virkne, JavaScript virkne, JavaScript veidnes literālis, SQL teksta literālis, CSV lauks, HTML atribūta vērtība, regulāra izteiksme vai URL komponents.
  2. Ierakstiet vai ielīmējiet tekstu ievades lodziņā.
  3. Noklikšķiniet uz Escape, lai vienkāršu tekstu pārvērstu drošā literālī, vai Unescape, lai literāli pārvērstu atpakaļ vienkāršā tekstā. Rezultāts atjaunojas rakstīšanas laikā pēdējā izvēlētajā virzienā.
  4. Pielāgojiet formātam rādītās iespējas: Pievienot apkārtējās pēdiņas, Escape ne-ASCII rakstzīmēm vai Atstarpes kā + (veidlapas dati).
  5. Noklikšķiniet uz Kopēt vai Izmantot rezultātu kā ievadi, lai apgrieztu darbību un pārbaudītu apgriezto ceļu.

Rakstzīmju skaits pirms un pēc tiek rādīts zem pogām. Viss darbojas jūsu pārlūkprogrammā; nekas netiek augšupielādēts.

Ko dara katrs formāts

  • JSON virkne: izsargā ", \ un vadības rakstzīmes (\n, \t, \u0000…), tieši kā JSON.stringify. Ar Escape ne-ASCII rakstzīmēm katra rakstzīme virs U+007E kļūst par \uXXXX (emocijzīmes kļūst par surogātpāri, piemēram, 😀). Unescape pieņem tekstu ar vai bez dubultpēdiņām un pieļauj neapstrādātus rindu pārtraukumus.
  • JavaScript virkne (‘…’): izsargā atpakaļvērsto slīpsvītru, vienpēdiņu, rindu pārtraukumus un vadības rakstzīmes, kā arī U+2028 un U+2029, kas bojā vecākus dzinējus. Unescape saprot \x41, A, \u{1F600}, vecās astotnieku secības, piemēram, \101, un rindu turpinājumus.
  • JavaScript veidnes literālis (`…`): izsargā atpakaļvērstās pēdiņas, atpakaļvērstās slīpsvītras un ${, lai neviena izteiksme netiktu izpildīta; rindu pārtraukumi un tabulācijas paliek, jo veidņu literāļi tos atļauj.
  • SQL teksta literālis (‘…’): dubulto vienpēdiņas (O'Brien → 'O''Brien'), kā standarta SQL. Unescape noraida pēdiņu, kas nav dubultota. Atpakaļvērstās slīpsvītras netiek mainītas: MySQL noklusējuma režīmā arī \ uzskata par escape rakstzīmi, tāpēc pārbaudiet savas datubāzes noteikumus.
  • CSV lauks (RFC 4180): ietver lauku dubultpēdiņās un dubulto iekšējās pēdiņas, ja tajā ir komats, semikols, tabulācija, pēdiņa, rindas pārtraukums vai sākuma/beigu atstarpe. Pievienot apkārtējās pēdiņas pēdiņas liek vienmēr.
  • HTML atribūta vērtība: aizstāj &, <, >, " un ' ar entītijām, kas ir droši gan vienpēdiņu, gan dubultpēdiņu atribūtos. Unescape atkodē ciparu atsauces un &amp;, &lt;, &gt;, &quot;, &apos; un &nbsp;.
  • Regulāra izteiksme (burtiskais teksts): ar atpakaļvērsto slīpsvītru izsargā . * + ? ^ $ { } ( ) | [ ] \ /, kā arī rindu pārtraukumus un tabulācijas, lai izteiksme tekstam atbilstu burtiski. Rezultāts ir derīgs gan ar u karodziņu, gan bez tā.
  • URL komponents (procentkodēšana): darbojas kā encodeURIComponent, kodējot visu, izņemot burtus, ciparus un - _ . ! ~ * ' ( ), kā UTF-8 baitus. Atstarpes kā + (veidlapas dati) izmanto application/x-www-form-urlencoded konvenciju.

SQL gadījumā escape nav drošības robeža

Kad izvēlaties SQL, rīks parāda atgādinājumu, un to vērts atkārtot: īstais risinājums pret SQL injekciju ir parametrizēts vaicājums (sagatavots izteikums), kurā vērtība tiek sūtīta atsevišķi no SQL teksta. Escape ar roku ir trausls: tas ir atkarīgs no datubāzes, savienojuma rakstzīmju kopas un iestatījumiem, piemēram, MySQL atpakaļvērstās slīpsvītras apstrādes. Izmantojiet šo rezultātu žurnālu lasīšanai, testa datu rakstīšanai vai vaicājuma atkļūdošanai, nekad vaicājumu veidošanai no lietotāja ievades.

CSV gadījumā rīks arī brīdina, ja vērtība sākas ar =, +, - vai @: izklājlapa to var izpildīt kā formulu (CSV injekcija). Pēdiņas to nenovērš; parasti palīdz vērtības sākumā pievienot apostrofu vai atstarpi.

Biežāk uzdotie jautājumi

Kāda ir atšķirība starp JSON virkni un JavaScript virkni?

JSON atļauj tikai dubultpēdiņas un nelielu escape kopu (\" \\ \/ \b \f \n \r \t \uXXXX). JavaScript pieņem arī vienpēdiņas, atpakaļvērstās pēdiņas, \x41, \u{…}, \v un \0. Derīgas JSON escape secības ir derīgas arī JavaScript, bet ne otrādi.

Kāpēc Unescape neizdodas ar „nederīga escape secība“?

Tekstā aiz atpakaļvērstās slīpsvītras ir kaut kas, ko formāts neatļauj, piemēram, \u12 ar mazāk nekā četriem heksadecimāliem cipariem vai noslēdzoša vientuļa slīpsvītra. Kļūdas ziņojums parāda kļūdaino secību.

Vai CSV vajadzīgas pēdiņas ap katru lauku?

Nē. RFC 4180 pēdiņas prasa tikai tad, ja laukā ir komats, dubultpēdiņa vai rindas pārtraukums. Šis rīks pēdiņas liek arī ap semikoliem, tabulācijām un sākuma vai beigu atstarpēm, jo daudzas izklājlapas tos izmanto kā atdalītājus vai apgriež.

Vai HTML atribūta escape pietiek, lai novērstu XSS?

Tas ir pareizs tekstam, kas ievietots pēdiņās ieliktā atribūta vērtībā. Ar to nepietiek atribūtiem, kas paši ir kods vai URL, piemēram, onclick vai href="javascript:…"; tiem vajadzīga validācija, nevis tikai escape.

Vai mans teksts tiek sūtīts uz serveri?

Nē. Visas pārveidošanas darbojas lokāli jūsu pārlūkprogrammā, tāpēc varat droši ielīmēt konfigurācijas vērtības vai datus, ko nevēlaties kopīgot.