Escape-sorozatok
Szinte minden escape-elési hiba kontextushiba, nem szintaxishiba. A karakter ismert — egy idézőjel, egy fordított perjel, egy ampersand — és az, ami nem világos, az az, hogy melyik hat ütköző szabály közül melyik vonatkozik arra a helyre, ahol a húr végzi.
Így ez a táblázat kontextus szerint van rendezve, nem karakter szerint. Ugyanaz az idézőjel egy CSV cellában megduplázódik, visszavonással escape-elve van a JSON-ban, " szövegre változik a HTML-ben, és teljesen egyedül hagyva van egy shell-ben az egy idézőjelek között. Négy sor, négy szabály, egy karakter.
A leghosszabb szabály, amely a legutóbbra történő ellátásban van, az a határon való escape-elés az érték átlépésével, és egyszer escape-eljen. A szöveg, amely kétszer van escape-elve — egy & az oldal forrásában, egy \\n a kimeneti fájlban — az aláírása annak az értéknek, amely kétszer az encoder-en átment, amely mindegyik azt feltételezte, hogy elsők.
JSON karakterláncok
10A JSON pontosan ezt a meneküléseket engedélyezi. Egy szó szerinti új sor vagy lap egy karakterláncon belül érvénytelen.
| Escape-elés | Eszközök | Mikor szükséged van rá | Kontextusban |
|---|---|---|---|
| \" | " | Egy dupla idézőjel egy karakterláncon belül | "say \"hi\"" |
| \\ | \ | Egy szó szerinti fordított perjelAz oka Windows útvonalak szakadásnak a JSON-ban. | "C:\\dir" |
| \/ | / | Egy előre perjel — opcionálisJogi, de szükségtelen; a szokás az JSON beágyazottsá a <script> címkékbe. | "a\/b" |
| \n | U+000A | Egy szállítási feed | "line\nline" |
| \r | U+000D | Egy kocsi visszatérés | |
| \t | U+0009 | Egy lap | |
| \b | U+0008 | Egy hátlap | |
| \f | U+000C | Egy forma feed | |
| \u00e9 | é | Bármely karakter négy számjegyből kódpont | "caf\u00e9" |
| \ud83d\ude00 | 😀 | Az U+FFFF fölötti karakter, helyettesítési párkéntA JSON nincs \u{…} forma, így az asztral karaktereknek két menekülésük van. |
JavaScript karakterláncok
10A JSON-t felépítő, plusz a template-literal menekülések.
| Escape-elés | Eszközök | Mikor szükséged van rá | Kontextusban |
|---|---|---|---|
| \' | ' | Egy egy idézőjel egy egy idézőjelen belül | |
| \" | " | Egy dupla idézőjel egy dupla idézőjelen belül | |
| \` | ` | Egy backtick egy template literálon belül | |
| \${ | ${ | Egy szó szerinti ${ egy template literálon belülAz vissza perjel nélkül ez egy interpoláció kezdet. | |
| \n | U+000A | Egy szállítási feed | |
| \xe9 | é | Egy karakter által két hex számjegyből, legfeljebb U+00FF-ig | |
| \u00e9 | é | Egy karakter által négy hex számjegyből | |
| \u{1f600} | 😀 | Bármely kódpont, azonban hosszúNem szükséges helyettesítési pár, ellentétben az négy számjegyből. | |
| \0 | U+0000 | Egy null karakter | |
| \u2028 | U+2028 | Sor szeparátorÉrvényes egy JS karakterláncon belül, de nem a JSON-ban — a klasszikus JSONP töredezés. |
HTML szöveg és attribútumok
8Csak az & és < szigorúan kell escape-elni szövegben; az idézőjelek számítanak az attribótumokon belül.
| Escape-elés | Eszközök | Mikor szükséged van rá | Kontextusban |
|---|---|---|---|
| & | & | Egy ampersandEscape-elje ezt az első, vagy minden egyéb escape-elést dupláz. | |
| < | < | Egy kevesebb jel, így ez nem kezd egy címkét | |
| > | > | Egy nagyobb jel | |
| " | " | Egy dupla idézőjel egy attribótumon belül | |
| ' | ' | Egy egy idézőjel egy attribótumon belülAz ' az HTML5-ben is működik, de a numerikus forma mindenütt biztonságos. | |
| | U+00A0 | Egy nem szünetet space | |
| é | é | Bármely karakter decimális kódpontból | |
| é | é | Bármely karakter hex kódpontból |
URL-ek (százalékos kódolás)
9Mely karaktereknek van szüksége escape-elésre, attól függ, hogy az URL melyik részében ülnek.
| Escape-elés | Eszközök | Mikor szükséged van rá | Kontextusban |
|---|---|---|---|
| %20 | Egy szóköz, érvényes az URL bármely helyén | ||
| + | Egy szóköz, de csak egy formakódolt lekérdezési karakterláncon belülEgy útvonalszakaszban ez egy szó szerinti plusz jel. | ||
| %25 | % | Egy szó szerinti százalékos jelHagyja ki ezt és az érték kétszer dekódol. | |
| %2F | / | Egy perjel egy egy útvonalszakaszban | |
| %3F | ? | Egy kérdőjel egy érték belsejében | |
| %26 | & | Egy ampersand egy paraméter értéke belsejében | |
| %3D | = | Egy egyenlő jel egy paraméter értéke belsejében | |
| %23 | # | Egy kivonat, így ez nem kezd a töredéket | |
| %C3%A9 | é | Egy nem-ASCII karakter, mivel annak UTF-8 bájtjaiEgy karakter lehet két, három vagy négy százalékos csoport. |
CSV mezők
5RFC 4180: helyezze az idézőjelet a mezőbe, majd duplálja a belső: "say \"hi\"". A fordított perjel a megfelelő CSV elemzőhöz nem jelent semmit.
| Escape-elés | Eszközök | Mikor szükséged van rá | Kontextusban |
|---|---|---|---|
| "" | " | Az idézett mező belsejében egy dupla idézőjel | "say ""hi""" |
| "a,b" | , | Egy mező az elválasztót tartalmazó — helyezze az idézőjelet a mezőbe | |
| "a b" | U+000A | Egy mező egy sortörést tartalmazó — helyezze az idézőjelet a mezőbe | |
| " a" | Vezető vagy záró szóközök megőrzéseBe nem jelölt, sok elemző trim.az | ||
| '=SUM(A1) | = | Állítsa meg a táblázatkezelőt a cella képletként való végrehajtásábanAz =, +, -, vagy @ karakterrel kezdődő értékekre vonatkozik. Ez a képletinjekció. |
SQL szó szerinti és azonosítók
6Olvassa meg ezeket; ne írja. Használjon parametrizált lekérdezéseket helyette.
| Escape-elés | Eszközök | Mikor szükséged van rá | Kontextusban |
|---|---|---|---|
| '' | ' | Egy egy idézőjel egy egy karakterláncban — dupláz | 'O''Brien' |
| "order" | order | Egy fenntartott szó oszlopnévként használvaAz dupla idézőjelek a szabvány; az SQL Server [zárójeleket] használ. | |
| `order` | order | Ugyanez a MySQL és MariaDB-ben | |
| \% | % | Egy szó szerinti % egy LIKE mintában | |
| \_ | _ | Egy szó szerinti _ egy LIKE mintában | |
| $tag$ … $tag$ | ' | PostgreSQL dollár idézés — nincs escape-elés egyáltalán belülHasznosak a kódtest számára, ahol minden idézőjel megkétszerezés olvashatatlan. |
Shell argumentumok
6Az egy idézőjelek szó szerintiek, az dupla idézőjelek még kiterjesztik a változókat.
| Escape-elés | Eszközök | Mikor szükséged van rá | Kontextusban |
|---|---|---|---|
| '…' | $ ` \ | Minden belül szó szerintiAz legbiztonságosabb idézés van — de nem tartalmazhat egy egy idézőjelet. | |
| "…" | * ? space | Az globok és szóközök biztonságosak, a változók még kiterjesztikAlways quote variables: "$var", never bare $var. | |
| \ | Egy szóköz egy nem idézett fájlnévben | ||
| \$ | $ | Egy szó szerinti dollár jel egy dupla idézőjelen belül | |
| \` | ` | Egy szó szerinti backtick, nem egy parancs helyettesítés | |
| '\'' | ' | Egy egy idézőjel egy egy idézőjelen belülLezárni, escape-elni, újranyitni — nem lehet közvetlenül beágyazni. |