Escapovanie a unescapovanie reťazcov
Escapuj alebo unescapuj reťazec pre JSON, JavaScript, šablónové literály, SQL, CSV, atribúty HTML, regulárne výrazy a adresy URL priamo v prehliadači.
Escapovanie nenahrádza parametrizované dopyty (prepared statements). Tento výstup používaj na čítanie alebo ladenie SQL, nikdy nie na zostavovanie dopytov z používateľských údajov.
Ako escapovať alebo unescapovať reťazec
- V poli Formát vyber cieľ: reťazec JSON, reťazec JavaScriptu, šablónový literál JavaScriptu, reťazcový literál SQL, pole CSV, hodnotu atribútu HTML, regulárny výraz alebo súčasť URL.
- Napíš alebo vlož text do vstupného poľa.
- Klikni na Escapovať, ak chceš zmeniť obyčajný text na bezpečný literál, alebo na Unescapovať, ak chceš literál vrátiť na obyčajný text. Výsledok sa aktualizuje počas písania v smere, ktorý si naposledy zvolil.
- Uprav voľby zobrazené pre daný formát: Pridať okolité úvodzovky, Escapovať znaky mimo ASCII alebo Medzery ako + (údaje formulára).
- Klikni na Kopírovať alebo na Použiť výstup ako vstup, aby si operáciu obrátil a skontroloval cestu tam a späť.
Počty znakov pred a po sa zobrazujú pod tlačidlami. Všetko beží v tvojom prehliadači; nič sa nenahráva.
Čo robí každý formát
- Reťazec JSON: escapuje
",\a riadiace znaky (\n,\t,\u0000…), presne akoJSON.stringify. S voľbou Escapovať znaky mimo ASCII sa každý znak nad U+007E zmení na\uXXXX(emoji sa zmenia na pár náhradných znakov, napríklad😀). Unescapovanie prijíma text s dvojitými úvodzovkami aj bez nich a toleruje surové zalomenia riadkov. - Reťazec JavaScriptu (‘…’): escapuje spätné lomítko, apostrof, zalomenia riadkov a riadiace znaky, plus U+2028 a U+2029, ktoré kazia staršie enginy. Unescapovanie rozumie
\x41,A,\u{1F600}, starým osmičkovým sekvenciám ako\101a pokračovaniam riadka. - Šablónový literál JavaScriptu (`…`): escapuje spätné apostrofy, spätné lomítka a
${, aby sa nevyhodnocoval žiadny výraz; zalomenia riadkov a tabulátory zostávajú, keďže ich šablónové literály povoľujú. - Reťazcový literál SQL (‘…’): zdvojuje apostrofy (
O'Brien→'O''Brien'), ako v štandardnom SQL. Unescapovanie odmietne apostrof, ktorý nie je zdvojený. Spätné lomítka sa nechávajú: MySQL v predvolenom režime považuje\tiež za escape znak, preto si over pravidlá svojej databázy. - Pole CSV (RFC 4180): ak pole obsahuje čiarku, bodkočiarku, tabulátor, úvodzovku, zalomenie riadka alebo úvodnú či koncovú medzeru, uzavrie ho do dvojitých úvodzoviek a vnútorné úvodzovky zdvojí. Pridať okolité úvodzovky úvodzovky vynúti.
- Hodnota atribútu HTML: nahradí
&,<,>,"a'entitami, čo je bezpečné v atribútoch s jednoduchými aj dvojitými úvodzovkami. Unescapovanie dekóduje číselné odkazy a&,<,>,",'a . - Regulárny výraz (doslovný text): escapuje spätným lomítkom
. * + ? ^ $ { } ( ) | [ ] \ /, plus zalomenia riadkov a tabulátory, takže vzor zodpovedá textu doslovne. Výsledok je platný s príznakomuaj bez neho. - Súčasť URL (percentové kódovanie): funguje ako
encodeURIComponenta kóduje všetko okrem písmen, číslic a znakov- _ . ! ~ * ' ( )ako bajty UTF-8. Medzery ako + (údaje formulára) používa konvenciuapplication/x-www-form-urlencoded.
Escapovanie nie je bezpečnostná hranica pre SQL
Keď zvolíš SQL, nástroj zobrazí pripomienku, ktorú stojí za to zopakovať: skutočným riešením SQL injection je parametrizovaný dopyt (prepared statement), pri ktorom sa hodnota posiela oddelene od textu SQL. Ručné escapovanie je krehké: závisí od databázy, znakovej sady pripojenia a nastavení, ako je spracovanie spätných lomítok v MySQL. Tento výstup používaj na čítanie protokolov, písanie testovacích údajov alebo ladenie dopytu, nikdy nie na zostavovanie dopytov z používateľských údajov.
Pri CSV nástroj tiež upozorní, keď hodnota začína znakom =, +, - alebo @: tabuľkový procesor ju môže spustiť ako vzorec (CSV injection). Úvodzovky tomu nezabránia; obvyklým riešením je pridať pred hodnotu apostrof alebo medzeru.
Často kladené otázky
Aký je rozdiel medzi reťazcom JSON a reťazcom JavaScriptu?
JSON povoľuje len dvojité úvodzovky a malú množinu escape sekvencií (\" \\ \/ \b \f \n \r \t \uXXXX). JavaScript prijíma aj apostrofy, spätné apostrofy, \x41, \u{…}, \v a \0. Platné escape sekvencie JSON sú platné v JavaScripte, ale nie naopak.
Prečo unescapovanie zlyhá s hlásením „neplatná escape sekvencia“?
Text obsahuje spätné lomítko, za ktorým nasleduje niečo, čo formát nepovoľuje, napríklad \u12 s menej než štyrmi hex číslicami alebo osamotené spätné lomítko na konci. Chybové hlásenie ukáže chybnú sekvenciu.
Potrebuje CSV úvodzovky okolo každého poľa?
Nie. RFC 4180 vyžaduje úvodzovky len vtedy, keď pole obsahuje čiarku, dvojitú úvodzovku alebo zalomenie riadka. Tento nástroj dáva úvodzovky aj pri bodkočiarkach, tabulátoroch a úvodných či koncových medzerách, pretože ich mnohé tabuľkové procesory používajú ako oddeľovače alebo ich orezávajú.
Stačí escapovanie atribútu HTML na zabránenie XSS?
Je správne pre text vložený do atribútu v úvodzovkách. Nestačí pri atribútoch, ktoré sú samy kódom alebo adresami URL, ako onclick alebo href="javascript:…"; tie treba overovať, nielen escapovať.
Odosiela sa môj text na server?
Nie. Všetky konverzie prebiehajú lokálne v tvojom prehliadači, takže môžeš bezpečne vkladať konfiguračné hodnoty alebo údaje, ktoré by si nezdieľal.
Súvisiace nástroje
- Kódovanie a dekódovanie URL Bezplatné kódovanie a dekódovanie URL. Percentovo kóduj parametre dopytu alebo celé adresy, dekóduj sekvencie %XX a spracuj + ako medzeru. Beží v prehliadači.
- Kódovanie a dekódovanie HTML entít Zakóduj špeciálne znaky ako entity HTML (pomenované, desiatkové alebo hex) alebo dekóduj ľubovoľnú entitu s plným zoznamom 2 231 pomenovaných odkazov HTML5.
- Formátovanie a validácia JSON Bezplatný formátovač a validátor JSON, ktorý skrášľuje, minifikuje a kontroluje JSON v prehliadači a hlási syntaktické chyby s riadkom a stĺpcom.
- Tester regulárnych výrazov Testuj regulárne výrazy JavaScriptu naživo so zvýraznenými zhodami, zachytávacími skupinami, nahradením a vysvetlením každého prvku vzoru v bežnom jazyku.