Szöveg escape-elése és visszafejtése
Escape-eld vagy fejtsd vissza a szöveget JSON, JavaScript, sablonliterál, SQL, CSV, HTML-attribútum, reguláris kifejezés és URL formátumhoz, a böngésződben.
Az escape-elés nem helyettesíti a paraméterezett lekérdezéseket (prepared statement). Ezt a kimenetet SQL olvasásához vagy hibakereséshez használd, soha ne felhasználói bemenetből építsd vele a lekérdezéseket.
Hogyan escape-elj vagy fejts vissza egy szöveget
- A Formátum mezőben válaszd ki a célt: JSON-sztring, JavaScript-sztring, JavaScript sablonliterál, SQL-sztringliterál, CSV-mező, HTML-attribútum értéke, reguláris kifejezés vagy URL-összetevő.
- Írd be vagy illeszd be a szöveget a bemeneti mezőbe.
- Kattints az Escape-elés gombra, hogy a sima szövegből biztonságos literál legyen, vagy a Visszafejtés gombra, hogy a literálból újra sima szöveg legyen. Az eredmény gépelés közben frissül, az utoljára választott irányban.
- Állítsd be a formátumhoz megjelenő beállításokat: Körülvevő idézőjelek hozzáadása, Nem ASCII karakterek escape-elése vagy Szóközök + jelként (űrlapadatok).
- Kattints a Másolás gombra, vagy a Kimenet használata bemenetként gombra, hogy megfordítsd a műveletet, és ellenőrizd az oda-vissza átalakítást.
A gombok alatt látható a karakterek száma előtte és utána. Minden a böngésződben fut; semmi nem kerül feltöltésre.
Mit csinálnak az egyes formátumok
- JSON-sztring: escape-eli a
", a\és a vezérlőkaraktereket (\n,\t,\u0000…), pontosan úgy, mint aJSON.stringify. A Nem ASCII karakterek escape-elése esetén minden U+007E fölötti karakter\uXXXXalakú lesz (az emojik surrogate-párrá, például😀). A visszafejtés elfogadja a szöveget a dupla idézőjelekkel és azok nélkül is, és tűri a nyers sortöréseket. - JavaScript-sztring (‘…’): escape-eli a fordított perjelet, az aposztrófot, a sortöréseket és a vezérlőkaraktereket, valamint az U+2028 és U+2029 karaktert, amelyek a régebbi motoroknál hibát okoznak. A visszafejtés érti a
\x41,A,\u{1F600}alakot, a régi, nyolcas számrendszerű escape-eket, például a\101-et, és a sorfolytatásokat. - JavaScript sablonliterál (`…`): escape-eli a visszaaposztrófokat, a fordított perjeleket és a
${jelet, hogy ne értékelődjön ki kifejezés; a sortörések és a tabulátorok változatlanok maradnak, mert a sablonliterálok megengedik őket. - SQL-sztringliterál (‘…’): megkettőzi az aposztrófokat (
O'Brien→'O''Brien'), ahogy a szabványos SQL-ben szokás. A visszafejtés megtagad egy nem megkettőzött aposztrófot. A fordított perjeleket békén hagyja: a MySQL alapértelmezett módjában a\is escape-karakter, ezért ellenőrizd az adatbázisod szabályait. - CSV-mező (RFC 4180): dupla idézőjelbe teszi a mezőt, és megkettőzi a belső idézőjeleket, ha vesszőt, pontosvesszőt, tabulátort, idézőjelet, sortörést vagy kezdő/záró szóközt tartalmaz. A Körülvevő idézőjelek hozzáadása kikényszeríti az idézőjeleket.
- HTML-attribútum értéke: a
&,<,>,"és'karaktereket entitásokra cseréli, ami az egyszeres és a dupla idézőjeles attribútumokban is biztonságos. A visszafejtés dekódolja a numerikus hivatkozásokat és az&,<,>,",'és entitásokat. - Reguláris kifejezés (szó szerinti szöveg): fordított perjellel escape-eli a
. * + ? ^ $ { } ( ) | [ ] \ /karaktereket, valamint a sortöréseket és a tabulátorokat, hogy a minta szó szerint illeszkedjen a szövegre. Az eredmény auflaggel és anélkül is érvényes. - URL-összetevő (százalékkódolás): úgy működik, mint az
encodeURIComponent: a betűk, számjegyek és a- _ . ! ~ * ' ( )karakterek kivételével mindent UTF-8 bájtokként kódol. A Szóközök + jelként (űrlapadatok) azapplication/x-www-form-urlencodedkonvenciót használja.
Az escape-elés SQL-nél nem biztonsági határ
Ha az SQL-t választod, az eszköz emlékeztetőt mutat, és ez megérdemli az ismétlést: az SQL-injekció valódi megoldása a paraméterezett lekérdezés (prepared statement), ahol az értéket az SQL-szövegtől külön küldik el. A kézi escape-elés törékeny: az adatbázistól, a kapcsolat karakterkészletétől és olyan beállításoktól függ, mint a MySQL fordított perjel kezelése. Ezt a kimenetet naplók olvasásához, tesztadatok íráshoz vagy lekérdezés hibakereséséhez használd, soha ne felhasználói bemenetből építsd vele a lekérdezéseket.
A CSV-nél az eszköz azt is jelzi, ha egy érték =, +, - vagy @ jellel kezdődik: a táblázatkezelő képletként futtathatja (CSV-injekció). Az idézőjelezés ezt nem akadályozza meg; az érték elé tett aposztróf vagy szóköz a szokásos védekezés.
Gyakori kérdések
Mi a különbség a JSON-sztring és a JavaScript-sztring között?
A JSON csak dupla idézőjelet és az escape-ek egy kis készletét engedi meg (\" \\ \/ \b \f \n \r \t \uXXXX). A JavaScript az aposztrófot, a visszaaposztrófot, a \x41, \u{…}, \v és \0 alakot is elfogadja. Az érvényes JSON-escape-ek érvényesek JavaScriptben is, de fordítva nem.
Miért sikertelen a visszafejtés „érvénytelen escape-szekvencia” hibával?
A szöveg olyan fordított perjelet tartalmaz, amelyet a formátum nem engedélyez, például a négynél kevesebb hexadecimális számjegyű \u12 alakot, vagy egy záró magányos fordított perjelet. A hibaüzenet megmutatja a hibás szekvenciát.
Kell idézőjel a CSV minden mezője köré?
Nem. Az RFC 4180 csak akkor ír elő idézőjelet, ha a mező vesszőt, dupla idézőjelet vagy sortörést tartalmaz. Ez az eszköz a pontosvesszőt, a tabulátort és a kezdő vagy záró szóközt is idézőjelbe teszi, mert sok táblázatkezelő határolóként használja, vagy levágja őket.
Elég a HTML-attribútum escape-elése az XSS megelőzésére?
Az idézőjelezett attribútumértékbe kerülő szövegre helyes. Nem elég azokra az attribútumokra, amelyek maguk kódot vagy URL-t tartalmaznak, például az onclick vagy a href="javascript:…"; ezeknél ellenőrzés kell, nem csak escape-elés.
Elküldésre kerül a szövegem egy szerverre?
Nem. Minden átalakítás helyben, a böngésződben fut, így nyugodtan beilleszthetsz konfigurációs értékeket vagy olyan adatokat, amelyeket nem osztanál meg.
Kapcsolódó eszközök
- URL-kódoló és -dekódoló Ingyenes URL-kódoló és -dekódoló: kódolj paramétereket vagy teljes URL-eket, fejtsd vissza a %XX sorozatokat, és kezeld a + jelet szóközként. Böngészőben fut.
- HTML entitás kódoló és dekódoló Alakítsd a különleges karaktereket HTML entitásokká (elnevezett, decimális, hex), vagy dekódolj entitásokat a 2231 HTML5 névvel ellátott hivatkozás listájával.
- JSON formázó és validátor Ingyenes JSON formázó és validátor, amely a böngésződben szépít, tömörít és ellenőriz JSON-t, a szintaxishibákat sor és oszlop szerint jelezve.
- Regex-teszter Tesztelj JavaScript reguláris kifejezéseket élőben: kiemelt találatok, rögzítő csoportok, csere és minden elem magyarázata közérthető nyelven.