Escape dhe unescape i vargjeve
Bëj escape ose unescape një varg për JSON, JavaScript, shabllone, SQL, CSV, atribute HTML, shprehje të rregullta dhe URL, direkt në shfletuesin tënd.
Escape nuk zëvendëson query-t e parametrizuara (prepared statements). Përdore këtë dalje për të lexuar ose debuguar SQL, kurrë për të ndërtuar query nga hyrje e përdoruesit.
Si të bësh escape ose unescape një varg
- Zgjidh objektivin te Formati: varg JSON, varg JavaScript, literal shabllon JavaScript, literal vargu SQL, fushë CSV, vlerë atributi HTML, shprehje e rregullt ose komponent URL.
- Shkruaj ose ngjit tekstin në kutinë e hyrjes.
- Kliko Escape për ta kthyer tekstin e thjeshtë në një literal të sigurt, ose Unescape për ta kthyer një literal në tekst të thjeshtë. Rezultati përditësohet ndërsa shkruan, në drejtimin që zgjodhe së fundmi.
- Rregullo opsionet e shfaqura për formatin: Shto thonjëza rreth tekstit, Bëj escape karakteret jo-ASCII ose Hapësirat si + (të dhëna formulari).
- Kliko Kopjo, ose Përdor daljen si hyrje për ta kthyer veprimin mbrapsht dhe për të kontrolluar ciklin e plotë.
Numri i karaktereve para dhe pas shfaqet nën butonat. Gjithçka ekzekutohet në shfletuesin tënd; asgjë nuk ngarkohet.
Çfarë bën çdo format
- Varg JSON: bën escape
",\dhe karakteret e kontrollit (\n,\t,\u0000…), saktësisht siJSON.stringify. Me Bëj escape karakteret jo-ASCII, çdo karakter mbi U+007E bëhet\uXXXX(emoji bëhen një çift surrogatësh si😀). Unescape e pranon tekstin me ose pa thonjëzat e dyfishta, dhe toleron ndarje të papërpunuara rreshtash. - Varg JavaScript (‘…’): bën escape vijën e pjerrët të prapme, apostrofin, ndarjet e rreshtit dhe karakteret e kontrollit, plus U+2028 dhe U+2029, që prishin motorët më të vjetër. Unescape kupton
\x41,A,\u{1F600}, escape-et oktale të vjetra si\101dhe vazhdimet e rreshtit. - Literal shabllon JavaScript (`…`): bën escape backtick-et, vijat e pjerrëta të prapme dhe
${, që asnjë shprehje të mos vlerësohet; ndarjet e rreshtit dhe tab-et mbeten siç janë, pasi shabllonet i lejojnë. - Literal vargu SQL (‘…’): dyfishon apostrofët (
O'Brien→'O''Brien'), si në SQL standard. Unescape refuzon një apostrof që nuk është dyfishuar. Vijat e pjerrëta të prapme lihen siç janë: MySQL në mënyrën e parazgjedhur e trajton\gjithashtu si karakter escape, ndaj kontrollo rregullat e bazës tënde. - Fushë CSV (RFC 4180): e mbështjell fushën në thonjëza të dyfishta dhe dyfishon thonjëzat e brendshme kur përmban presje, pikëpresje, tab, thonjëz, ndarje rreshti ose hapësirë në fillim/fund. Shto thonjëza rreth tekstit i detyron thonjëzat.
- Vlerë atributi HTML: zëvendëson
&,<,>,"dhe'me entitete, gjë që është e sigurt si në atributet me apostrof ashtu edhe me thonjëza të dyfishta. Unescape dekodon referencat numerike dhe&,<,>,",'e . - Shprehje e rregullt (tekst literal): bën escape me vijë të pjerrët të prapme
. * + ? ^ $ { } ( ) | [ ] \ /, plus ndarjet e rreshtit dhe tab-et, që modeli ta përputhë tekstin fjalë për fjalë. Rezultati është i vlefshëm me ose pa flamurinu. - Komponent URL (percent-encoding): punon si
encodeURIComponent, duke koduar gjithçka përveç shkronjave, shifrave dhe- _ . ! ~ * ' ( )si bajte UTF-8. Hapësirat si + (të dhëna formulari) përdor konventënapplication/x-www-form-urlencoded.
Escape nuk është kufi sigurie për SQL
Kur zgjedh SQL, mjeti shfaq një kujtesë, dhe ia vlen ta përsërisim: zgjidhja e vërtetë kundër SQL injection është një query e parametrizuar (prepared statement), ku vlera dërgohet veçmas nga teksti SQL. Escape me dorë është i brishtë: varet nga baza e të dhënave, bashkësia e karaktereve e lidhjes dhe cilësime si trajtimi i vijës së pjerrët të prapme në MySQL. Përdore këtë dalje për të lexuar log-e, për të shkruar fixture ose për të debuguar një query, kurrë për të ndërtuar query nga hyrje e përdoruesit.
Për CSV, mjeti paralajmëron edhe kur një vlerë fillon me =, +, - ose @: një fletë llogaritjeje mund ta ekzekutojë si formulë (CSV injection). Thonjëzat nuk e parandalojnë këtë; zakonisht zbutet duke vendosur para vlerës një apostrof ose një hapësirë.
Pyetje të shpeshta
Cili është ndryshimi mes një vargu JSON dhe një vargu JavaScript?
JSON lejon vetëm thonjëza të dyfishta dhe një bashkësi të vogël escape-esh (\" \\ \/ \b \f \n \r \t \uXXXX). JavaScript pranon edhe apostrofë, backtick-e, \x41, \u{…}, \v dhe \0. Escape-et e vlefshme JSON janë të vlefshme në JavaScript, por jo anasjelltas.
Pse unescape dështon me “sekuencë escape e pavlefshme”?
Teksti përmban një vijë të pjerrët të prapme të ndjekur nga diçka që formati nuk e lejon, si \u12 me më pak se katër shifra hex, ose një vijë të pjerrët të prapme të vetme në fund. Mesazhi i gabimit tregon sekuencën me problem.
A kërkon CSV thonjëza rreth çdo fushe?
Jo. RFC 4180 kërkon thonjëza vetëm kur fusha përmban presje, thonjëz të dyfishtë ose ndarje rreshti. Ky mjet vë thonjëza edhe te pikëpresjet, tab-et dhe hapësirat në fillim a në fund, sepse shumë fletë llogaritjeje i përdorin si ndarës ose i presin.
A mjafton escape i atributit HTML për të parandaluar XSS?
Është i saktë për tekstin e vendosur brenda vlerës së një atributi me thonjëza. Nuk mjafton për atribute që janë vetë kod ose URL, si onclick ose href="javascript:…"; ato kërkojnë validim, jo vetëm escape.
A dërgohet teksti im te një server?
Jo. Të gjitha konvertimet ekzekutohen lokalisht në shfletuesin tënd, ndaj mund të ngjitësh pa rrezik vlera konfigurimi ose të dhëna që nuk do t’i ndaje.
Mjete të ngjashme
- Kodues dhe dekodues URL Kodues dhe dekodues URL falas. Kodo parametrat e query ose URL të plota, dekodo sekuencat %XX dhe trajto + si hapësirë. Ekzekutohet në shfletuesin tënd.
- Koduesi dhe dekoduesi i entiteteve HTML Kodo karakteret speciale si entitete HTML (me emër, dhjetore ose hex) ose dekodo çdo entitet, me listën e plotë të 2 231 referencave të emërtuara HTML5.
- Formatuesi dhe vlerësuesi i JSON Formatues dhe vlerësues JSON falas që bukuron, minifikon dhe kontrollon JSON në shfletuesin tënd, me gabimet e sintaksës sipas rreshtit dhe kolonës.
- Testues regex Testo shprehje të rregullta JavaScript drejtpërdrejt me përputhje të theksuara, grupe kapëse, zëvendësim dhe një shpjegim të thjeshtë të çdo token-i të modelit.