Ubeganje in razveljavitev ubeganja nizov
Ubeži ali razveljavi ubeganje niza za JSON, JavaScript, predloge, SQL, CSV, atribute HTML, regularne izraze in URL, kar v brskalniku.
Ubeganje ni nadomestilo za parametrizirane poizvedbe (pripravljene stavke). Ta izhod uporabi za branje ali razhroščevanje SQL, nikoli za gradnjo poizvedb iz uporabniških vnosov.
Kako ubežati ali razveljaviti ubeganje niza
- V Oblika izberi cilj: niz JSON, niz JavaScript, predloga JavaScript, niz SQL, polje CSV, vrednost atributa HTML, regularni izraz ali sestavni del URL.
- Besedilo vpiši ali prilepi v vnosno polje.
- Klikni Ubeži, da navadno besedilo spremeniš v varen literal, ali Razveljavi ubeganje, da literal spremeniš nazaj v navadno besedilo. Rezultat se posodablja med tipkanjem, v smeri, ki si jo izbral nazadnje.
- Prilagodi možnosti, prikazane za obliko: Dodaj obdajajoče narekovaje, Ubeži znake, ki niso ASCII ali Presledki kot + (podatki obrazca).
- Klikni Kopiraj ali Uporabi izhod kot vhod, da operacijo obrneš in preveriš obhod.
Število znakov pred in po je prikazano pod gumbi. Vse teče v tvojem brskalniku; nič se ne naloži na strežnik.
Kaj počne posamezna oblika
- Niz JSON: ubeži
",\in kontrolne znake (\n,\t,\u0000…), natanko kotJSON.stringify. Z Ubeži znake, ki niso ASCII vsak znak nad U+007E postane\uXXXX(emoji postanejo par nadomestnih znakov, na primer😀). Razveljavitev ubeganja sprejme besedilo z dvojnimi narekovaji ali brez njih in prenese gole prelome vrstic. - Niz JavaScript (‘…’): ubeži poševnico nazaj, enojni narekovaj, prelome vrstic in kontrolne znake ter U+2028 in U+2029, ki starejše pogone zmedeta. Razveljavitev ubeganja razume
\x41,A,\u{1F600}, starejša osmiška ubeganja, kot je\101, in nadaljevanja vrstic. - Predloga JavaScript (`…`): ubeži poševne opuščaje, poševnice nazaj in
${, tako da se noben izraz ne ovrednoti; prelomi vrstic in tabulatorji ostanejo, kot so, saj jih predloge dovoljujejo. - Niz SQL (‘…’): podvoji enojne narekovaje (
O'Brien→'O''Brien'), kot v standardnem SQL. Razveljavitev ubeganja zavrne narekovaj, ki ni podvojen. Poševnice nazaj ostanejo nedotaknjene: MySQL v privzetem načinu\prav tako obravnava kot ubežni znak, zato preveri pravila svoje zbirke podatkov. - Polje CSV (RFC 4180): polje obda z dvojnimi narekovaji in podvoji notranje narekovaje, kadar vsebuje vejico, podpičje, tabulator, narekovaj, prelom vrstice ali presledek na začetku/koncu. Dodaj obdajajoče narekovaje narekovaje vsili.
- Vrednost atributa HTML:
&,<,>,"in'zamenja z entitetami, kar je varno v atributih z enojnimi in dvojnimi narekovaji. Razveljavitev ubeganja dekodira številske reference ter&,<,>,",'in . - Regularni izraz (dobesedno besedilo): z poševnico nazaj ubeži
. * + ? ^ $ { } ( ) | [ ] \ /ter prelome vrstic in tabulatorje, tako da se vzorec z besedilom ujema dobesedno. Rezultat je veljaven z zastavicouali brez nje. - Sestavni del URL (odstotno kodiranje): deluje kot
encodeURIComponentin kodira vse razen črk, števk in- _ . ! ~ * ' ( )kot bajte UTF-8. Presledki kot + (podatki obrazca) uporablja dogovorapplication/x-www-form-urlencoded.
Ubeganje ni varnostna meja za SQL
Ko izbereš SQL, orodje pokaže opomnik, ki ga je vredno ponoviti: prava rešitev proti vbrizgavanju SQL je parametrizirana poizvedba (pripravljen stavek), kjer se vrednost pošlje ločeno od besedila SQL. Ročno ubeganje je krhko: odvisno je od zbirke podatkov, nabora znakov povezave in nastavitev, kot je obravnava poševnice nazaj v MySQL. Ta izhod uporabi za branje dnevnikov, pisanje testnih podatkov ali razhroščevanje poizvedbe, nikoli za gradnjo poizvedb iz uporabniških vnosov.
Pri CSV orodje opozori tudi, kadar se vrednost začne z =, +, - ali @: preglednica jo lahko izvede kot formulo (vbrizgavanje v CSV). Narekovaji tega ne preprečijo; običajen ukrep je predpona z opuščajem ali presledkom.
Pogosta vprašanja
Kakšna je razlika med nizom JSON in nizom JavaScript?
JSON dovoljuje samo dvojne narekovaje in majhen nabor ubežnih zaporedij (\" \\ \/ \b \f \n \r \t \uXXXX). JavaScript sprejema tudi enojne narekovaje, poševne opuščaje, \x41, \u{…}, \v in \0. Veljavna ubežna zaporedja JSON so veljavna v JavaScriptu, obratno pa ne.
Zakaj razveljavitev ubeganja ne uspe z »neveljavno ubežno zaporedje«?
Besedilo vsebuje poševnico nazaj, ki ji sledi nekaj, česar oblika ne dovoljuje, na primer \u12 z manj kot štirimi šestnajstiškimi števkami ali zaključna osamljena poševnica nazaj. Sporočilo o napaki pokaže napačno zaporedje.
Ali CSV potrebuje narekovaje okoli vsakega polja?
Ne. RFC 4180 zahteva narekovaje samo, kadar polje vsebuje vejico, dvojni narekovaj ali prelom vrstice. To orodje v narekovaje da tudi podpičja, tabulatorje ter presledke na začetku ali koncu, ker jih mnoge preglednice uporabljajo kot ločila ali jih obrežejo.
Ali ubeganje atributa HTML zadošča za preprečevanje XSS?
Pravilno je za besedilo znotraj vrednosti atributa v narekovajih. Ne zadošča za atribute, ki so sami koda ali URL, kot sta onclick ali href="javascript:…"; ti zahtevajo preverjanje, ne samo ubeganja.
Ali se moje besedilo pošilja na strežnik?
Ne. Vse pretvorbe tečejo lokalno v tvojem brskalniku, zato lahko varno prilepiš konfiguracijske vrednosti ali podatke, ki jih ne bi delil.
Sorodna orodja
- Kodiranje in dekodiranje URL Brezplačno kodiranje in dekodiranje URL. Odstotno kodiraj parametre poizvedbe ali celotne URL, dekodiraj %XX in obravnavaj + kot presledek v brskalniku.
- Kodirnik in dekodirnik entitet HTML Posebne znake zapiši kot entitete HTML (poimenovane, desetiške ali šestnajstiške) ali dekodiraj poljubno entiteto s polnim seznamom 2 231 imen HTML5.
- Oblikovalnik in preverjevalnik JSON Brezplačen oblikovalnik in preverjevalnik JSON, ki v brskalniku polepša, zmanjša in preveri JSON, sintaksne napake pa javi z vrstico in stolpcem.
- Preizkus regularnih izrazov Sproti preizkusi regularne izraze JavaScripta z označenimi ujemanji, zajemalnimi skupinami, zamenjavo in razlago vsakega dela vzorca v preprostem jeziku.