Merkkijonon escape ja unescape
Tee merkkijonolle escape tai unescape JSONia, JavaScriptiä, mallimerkkijonoja, SQL:ää, CSV:tä, HTML-attribuutteja, regexiä ja URL-osoitteita varten.
Escape ei korvaa parametrisoituja kyselyitä (valmisteltuja lauseita). Käytä tätä tulosta SQL:n lukemiseen tai virheenkorjaukseen, älä koskaan kyselyiden rakentamiseen käyttäjän syötteestä.
Näin teet merkkijonolle escapen tai unescapen
- Valitse kohde kohdasta Muoto: JSON-merkkijono, JavaScript-merkkijono, JavaScript-mallimerkkijono, SQL-merkkijonoliteraali, CSV-kenttä, HTML-attribuutin arvo, säännöllinen lauseke tai URL-osa.
- Kirjoita tai liitä teksti syötekenttään.
- Napsauta Escape, jos haluat muuttaa tavallisen tekstin turvalliseksi literaaliksi, tai Unescape, jos haluat muuttaa literaalin takaisin tavalliseksi tekstiksi. Tulos päivittyy kirjoittaessasi viimeksi valitsemaasi suuntaan.
- Säädä muodolle näytettäviä asetuksia: Lisää ympärille lainausmerkit, Escape ei-ASCII-merkeille tai Välilyönnit +-merkkeinä (lomakedata).
- Napsauta Kopioi tai Käytä tulosta syötteenä kääntääksesi toiminnon ja tarkistaaksesi, että muunnos toimii molempiin suuntiin.
Merkkimäärät ennen ja jälkeen näkyvät painikkeiden alla. Kaikki toimii selaimessasi; mitään ei lähetetä palvelimelle.
Mitä kukin muoto tekee
- JSON-merkkijono: tekee escapen merkeille
",\ja ohjausmerkeille (\n,\t,\u0000…) täsmälleen kutenJSON.stringify. Asetuksella Escape ei-ASCII-merkeille jokainen merkki, joka on suurempi kuin U+007E, muuttuu muotoon\uXXXX(emojit muuttuvat korvausmerkkipariksi, kuten😀). Unescape hyväksyy tekstin joko kaksoislainausmerkein tai ilman ja sietää raakoja rivinvaihtoja. - JavaScript-merkkijono (‘…’): tekee escapen kenoviivalle, heittomerkille, rivinvaihdoille ja ohjausmerkeille sekä merkeille U+2028 ja U+2029, jotka rikkovat vanhempia moottoreita. Unescape ymmärtää muodot
\x41,A,\u{1F600}, vanhat oktaali-escapet kuten\101ja rivinjatkot. - JavaScript-mallimerkkijono (`…`): tekee escapen gravis-merkeille, kenoviivoille ja merkinnälle
${, jotta mitään lauseketta ei suoriteta. Rivinvaihdot ja tabulaattorit säilyvät sellaisinaan, koska mallimerkkijonot sallivat ne. - SQL-merkkijonoliteraali (‘…’): kaksintaa heittomerkit (
O'Brien→'O''Brien') kuten standardi-SQL:ssä. Unescape kieltäytyy heittomerkistä, jota ei ole kaksinnettu. Kenoviivoja ei muuteta: MySQL käsittelee oletustilassa myös\-merkin escape-merkkinä, joten tarkista tietokantasi säännöt. - CSV-kenttä (RFC 4180): ympäröi kentän kaksoislainausmerkeillä ja kaksintaa sisällä olevat lainausmerkit, kun kentässä on pilkku, puolipiste, tabulaattori, lainausmerkki, rivinvaihto tai alussa tai lopussa välilyönti. Lisää ympärille lainausmerkit pakottaa lainausmerkit.
- HTML-attribuutin arvo: korvaa merkit
&,<,>,"ja'entiteeteillä, mikä on turvallista sekä yksöis- että kaksoislainausmerkein merkityissä attribuuteissa. Unescape purkaa numeeriset viittaukset sekä&,<,>,",'ja . - Säännöllinen lauseke (kirjaimellinen teksti): lisää kenoviivan merkkien
. * + ? ^ $ { } ( ) | [ ] \ /sekä rivinvaihtojen ja tabulaattorien eteen, jotta lauseke täsmää tekstiin kirjaimellisesti. Tulos on kelvollinenu-lipulla ja ilman sitä. - URL-osa (prosenttikoodaus): toimii kuten
encodeURIComponentja koodaa kaiken paitsi kirjaimet, numerot ja merkit- _ . ! ~ * ' ( )UTF-8-tavuina. Välilyönnit +-merkkeinä (lomakedata) käyttääapplication/x-www-form-urlencoded-käytäntöä.
Escape ei ole SQL:n tietoturvaraja
Kun valitset SQL:n, työkalu näyttää muistutuksen, ja se kannattaa toistaa: SQL-injektion todellinen korjaus on parametrisoitu kysely (valmisteltu lause), jossa arvo lähetetään erillään SQL-tekstistä. Käsin tehty escape on hauras: se riippuu tietokannasta, yhteyden merkistöstä ja asetuksista, kuten MySQL:n kenoviivakäsittelystä. Käytä tätä tulosta lokien lukemiseen, testidatan kirjoittamiseen tai kyselyn virheenkorjaukseen, älä koskaan kyselyiden rakentamiseen käyttäjän syötteestä.
CSV:lle työkalu varoittaa myös, kun arvo alkaa merkillä =, +, - tai @: taulukkolaskenta voi suorittaa sen kaavana (CSV-injektio). Lainausmerkit eivät estä sitä; tavallinen torjuntakeino on lisätä arvon eteen heittomerkki tai välilyönti.
Usein kysytyt kysymykset
Mitä eroa on JSON-merkkijonolla ja JavaScript-merkkijonolla?
JSON sallii vain kaksoislainausmerkit ja pienen joukon escape-sekvenssejä (\" \\ \/ \b \f \n \r \t \uXXXX). JavaScript hyväksyy myös heittomerkit, gravis-merkit, \x41, \u{…}, \v ja \0. Kelvolliset JSON-escapet ovat kelvollisia JavaScriptissä, mutta ei päinvastoin.
Miksi unescape epäonnistuu viestillä "virheellinen escape-sekvenssi"?
Tekstissä on kenoviiva, jonka perässä on jotain, mitä muoto ei salli, esimerkiksi \u12 alle neljällä heksanumerolla tai lopussa oleva yksittäinen kenoviiva. Virheilmoitus näyttää virheellisen sekvenssin.
Tarvitseeko CSV:ssä olla lainausmerkit jokaisen kentän ympärillä?
Ei. RFC 4180 vaatii lainausmerkit vain, kun kentässä on pilkku, kaksoislainausmerkki tai rivinvaihto. Tämä työkalu lisää lainausmerkit myös puolipisteille, tabulaattoreille sekä alussa tai lopussa oleville välilyönneille, koska monet taulukkolaskentaohjelmat käyttävät niitä erottimina tai poistavat ne.
Riittääkö HTML-attribuutin escape XSS:n estämiseen?
Se on oikein tekstille, joka sijoitetaan lainausmerkein merkityn attribuutin arvoon. Se ei riitä attribuuteille, jotka ovat itse koodia tai URL-osoitteita, kuten onclick tai href="javascript:…"; ne vaativat validoinnin, ei pelkkää escapea.
Lähetetäänkö tekstini palvelimelle?
Ei. Kaikki muunnokset tapahtuvat paikallisesti selaimessasi, joten voit liittää turvallisesti asetusarvoja tai dataa, jota et jakaisi.
Aiheeseen liittyvät työkalut
- URL-koodaaja ja -dekooderi Ilmainen URL-koodaaja ja -dekooderi. Prosenttikoodaa kyselyparametreja tai kokonaisia URL-osoitteita, pura %XX-sekvenssit ja käsittele + välilyöntinä.
- HTML-entiteettien koodaus ja purku Muunna erikoismerkit HTML-entiteeteiksi (nimetty, desimaali tai heksa) tai pura mikä tahansa entiteetti HTML5:n 2 231 nimetyn viittauksen koko luettelolla.
- JSON-muotoilija ja -validaattori Ilmainen JSON-muotoilija ja -validaattori, joka siistii, pienentää ja tarkistaa JSONin selaimessa ja ilmoittaa syntaksivirheet rivin ja sarakkeen kanssa.
- Regex-testaaja Testaa JavaScriptin säännöllisiä lausekkeita livenä: korostetut osumat, kaappausryhmät, korvaus ja selkokielinen selitys jokaisesta osasta.