URL-i kodeerimise ja dekodeerimise eesmärk ning toimimine
URL-i kodeerimine (mida nimetatakse ka protsendikodeerimiseks) on standardne meetod teabe edastamiseks veebiaadressides (URI/URL). Kuna URL-id võivad sisaldada ainult piiratud hulka märke standardse ASCII-kooditabeli hulgast, tuleb kõik muud märgid teisendada spetsiaalsesse vormingusse.
Protsendikoodid kujutavad endast märke, mis on teisendatud nende baitväärtusteks UTF-8 kodeeringus ja esitatud kuueteistkümnendsüsteemis, mille ees on protsendimärk %. Näiteks tühik teisendatakse koodiks %20 ja ampersand & koodiks %26.
Seda protsessi on vaja kahel peamisel põhjusel:
- Mitte-ASCII märkide edastamine: Võõrkeelsed tähemärgid, näiteks täpitähed või hiina kirjamärgid, ei kuulu standardse ASCII-kooditabeli hulka ja vajavad seetõttu protsendikoodiks teisendamist.
- Struktuursete märkide eristamine: Märgid nagu
?,&ja=omavad URL-is spetsiaalset tähendust parameetrite eraldajatena. Kui neid märke soovitakse edastada andmete endi sees (näiteks otsingupäringus), tuleb need kodeerida, et veebiserver ei tõlgendaks neid aadressi struktuuri osana.
URL-i komponendi ja täieliku URL-i kodeerimise erinevus
URL-i kodeerimisel on kriitilise tähtsusega teha vahet, kas töödeldakse terviklikku veebiaadressi või ainult selle ühte osa (komponenti). Tööriist kasutab selleks kahte erinevat režiimi:
- Komponent (
Komponent): See režiim on mõeldud päringu väärtuste, teekonna osade või vormiväljade väärtuste kodeerimiseks. Teisendamiseks kasutatakse funktsiooneencodeURIComponentjadecodeURIComponent. Selles režiimis kodeeritakse absoluutselt kõik erimärgid, sealhulgas:,/,?,&ja=, muutes need veebiaadressi sees turvaliselt edastatavateks andmeteks. - Täielik URL (
Täielik URL): See režiim on mõeldud terviklike veebiaadresside töötlemiseks, kasutades funktsiooneencodeURIjadecodeURI. Siin jäetakse aadressi struktuuri määravad märgid (nagu protokollieraldaja://, kataloogide eraldaja/ning päringu sissejuhatajad?ja&) kodeerimata, et aadress säilitaks oma funktsionaalsuse ja loetavuse, samal ajal kui aadressis sisalduvad tühikud ja mitte-ASCII märgid teisendatakse turvaliselt.
HTML-olemite kodeerimine ja dekodeerimine
HTML-olemite kodeerimine (inglise keeles HTML entity escaping) on protsess, mille käigus asendatakse spetsiifilised märgid nende vastavate koodidega ehk olemitega. See on vajalik selleks, et veebibrauser ei tõlgendaks tekstis sisalduvaid märke HTML-koodi elementidena.
Peamised märgid, mis teisendatakse olemiteks, on:
<teisendatakse kujule<>teisendatakse kujule>&teisendatakse kujule&- Jutumärgid
"ja'teisendatakse vastavalt olemiteks"ja' - Mitte-ASCII tähemärgid ja muud erisümbolid.
See teisendus muudab teksti turvaliseks kleepimiseks HTML-dokumendi sisu või atribuutide sisse. Kui brauser kohtab olemikoodi, kuvab ta kasutajale korrektse sümboli, kuid ei ürita seda koodina käivitada. HTML-olemite režiimi valimisel peidetakse tööriista liideses URL-i ulatuse valik, kuna see ei kohaldu HTML-i töötlemisele.
Kodeerimine versus turvalisuse tagamine (sanitiseerimine)
On oluline mõista erinevust andmete kodeerimise/päästmise (escaping) ja turvalisuse sanitiseerimise (sanitization) vahel.
Kodeerimine ja olemite kasutamine on suunatud andmete korrektse esituse tagamisele sihtkeskkonnas (URL-is või HTML-is), et vältida süntaksivigu ja tagada märkide õige kuvamine. Kuigi HTML-olemite kasutamine aitab vältida teatud tüüpi koodisüste süsteeme (näiteks lihtsaid XSS-ründeid), ei asenda see täielikku turvalisuse sanitiseerimist. Sanitiseerimine on eraldiseisev protsess, mille käigus eemaldatakse sisendist pahatahtlik kood või keelatud HTML-märgendid täielikult, tuginedes turvareeglitele.
Vigased protsendikoodid ja nende mõju dekodeerimisele
URL-i dekodeerimisel peavad kõik protsendimärgiga kodeeringud moodustama korrektseid UTF-8 jadasid. UTF-8 on muutuva pikkusega kodeering, kus üks märk võib koosneda ühest kuni neljast baidist.
Kui sisendis esineb vigane või poolik jada – näiteks %E0%A4%A –, ei ole dekodeerimismootoril võimalik seda korrektseks märgiks teisendada. Sellisel juhul dekodeerimine ebaõnnestub ja tööriist kuvab veateate: "Selles URL-i tekstis on vigane protsendikood.".
Tööriista kasutamine ja tehnilised piirangud
Tööriist võimaldab sisestada teksti pikkusega kuni 2 000 000 märki. Sisendi ja väljundi suurust kuvatakse reaalajas märkide arvuna.
Võimalikud veateated ja olekud:
- Kui sisestatud tekst ületab lubatud limiidi, kuvatakse teade: "Sisend on selle tööriista jaoks liiga pikk. Hoidke see alla
{max}märgi.". - Kui toimingut üritatakse teha ilma sisendita, kuvatakse teade: "Asetage esmalt sisendtekst.".
- Kui teisendusprotsess võtab liiga kaua aega, ilmub teade: "Teisendamine võtab liiga kaua aega. Proovige väiksema sisendiga.".
- Muude ootamatute tõrgete korral kuvatakse teade: "Seda sisendit ei saanud teisendada.".
Kasutaja saab kasutada mugavusfunktsioone nagu näidise laadimine (kuvatakse teade "Näidis laaditud."), sisendi ja väljundi tühjendamine ("Sisend ja väljund on tühjendatud.") ning väljundi tõstmine uueks sisendiks ("Väljund on tõstetud sisendiks.").
Privaatsus ja andmetöötlus
Teie andmete turvalisus on tagatud sellega, et kogu URL-i ja HTML-teksti teisendamine toimub otse teie veebibrauseris. BroBroGo serverisse ei laadita ühtegi sisestatud tekstirida ega tulemust üles.
Korduma kippuvad küsimused
Kas peaksin valima URL-i komponendi või täieliku URL-i?
Kasutage valikut "Komponent" päringu väärtuste, teekonna osade või vormiväljade väärtuste jaoks. Kasutage valikut "Täielik URL", kui soovite, et märgid nagu: /? & = jääksid loetavaks.
Mida muudab HTML-olemite kodeerimine?
See teisendab märgid nagu <, >, &, jutumärgid ja muud mitte-ASCII märgid koodideks (olemiteks), mida saab turvaliselt kleepida HTML-teksti või atribuutide sisse.
Miks URL-i dekodeerimine mõnikord ebaõnnestub?
Protsendimärgiga kodeeringud peavad moodustama korrektseid UTF-8 jadasid. Vigast jada, nagu %E0%A4%A, ei saa ilma oletusteta dekodeerida.