URL-merkkijonon koodaus
URL-merkkijonon pakkaustyökalu
Johdanto
Verkko-ohjelmoinnissa ja Internet-viestinnässä URL-osoitteet (Uniform Resource Locators) ovat keskeisessä roolissa verkkosivustojen resurssien tunnistamisessa. Kuitenkin URL-osoitteilla on rajoituksia niiden sisältämille merkeille. Tietyillä merkeillä on erityisiä merkityksiä, kun taas toiset ovat vaarallisia käytettäväksi URL-osoitteissa, koska ne voivat aiheuttaa väärinymmärryksiä tai vahinkoja siirron aikana.
URL-koodaus, jota kutsutaan myös prosenttikoodaukseksi, on mekanismi erikoismerkkien muuntamiseksi muotoon, jota voidaan siirtää Internetin yli. Tämä työkalu mahdollistaa URL-merkkijonon syöttämisen ja erikoismerkkien pakkaamisen, varmistaen, että URL on voimassa ja voidaan tulkita oikein verkkoselaimissa ja palvelimissa.
URL-koodauksen ymmärtäminen
Mikä on URL-koodaus?
URL-koodauksessa vaihdetaan vaaralliset ASCII-merkit prosenttimerkillä %
, jota seuraa kaksi heksadesimaalista numeroa, jotka edustavat merkin ASCII-koodia. Se varmistaa, että tietoa siirretään Internetin yli ilman muutoksia.
Esimerkiksi, väliavainmerkki ' '
vaihdetaan %20
:ksi.
Miksi URL-koodaus on tarpeen?
URL-osoitteet voidaan lähettää Internetin yli vain ASCII-merkkijonona. Koska URL-osoitteet sisältävät usein merkkejä, jotka ovat tämän joukon ulkopuolella, ne on muunnettava voimassa olevaan ASCII-muotoon. URL-koodaus varmistaa, että erikoismerkit eivät aiheuta tahattomia vaikutuksia tai virheitä verkkopyynnöissä.
Merkit, jotka tarvitsevat koodausta
RFC 3986 -määritelmän mukaan seuraavat merkit ovat varattuja URL-osoitteissa ja ne on prosenttikoodattava, jos niitä käytetään kirjaimellisesti:
- Yleiset erottimet:
:
,/
,?
,#
,[
,]
,@
- Aluerottimet:
!
,$
,&
,'
,(
,)
,*
,+
,,
,;
,=
Lisäksi kaikki ei-ASCII-merkit, mukaan lukien Unicode-merkit, on koodattava.
Kuinka URL-koodaus toimii?
Koodausprosessi
-
Tunnista erikoismerkit: Analysoi URL-merkkijono ja tunnista merkit, jotka eivät ole sallittuja ASCII-merkkejä (kirjaimet, numerot,
-
,.
,_
,~
). -
Muunna ASCII-koodiksi: Jokaiselle erikoismerkille saadaan sen ASCII- tai Unicode-koodipiste.
-
Muunna UTF-8-bittijonoksi (tarvittaessa): Ei-ASCII-merkkejä varten koodaa merkki yhdeksi tai useammaksi tavuksi käyttäen UTF-8-koodausta.
-
Muunna heksadesimaaliseksi: Muunna jokainen tavu sen kahden numeron heksadesimaalimuotoon.
-
Lisää prosenttimerkki eteen: Edellä mainitun heksadesimaalibitin eteen lisätään
%
-merkki.
Esimerkki koodauksesta
-
Merkki:
' '
(Väliavain)- ASCII-koodi:
32
- Heksadesimaali:
20
- URL-koodattu:
%20
- ASCII-koodi:
-
Merkki:
'é'
- UTF-8-koodaus:
0xC3 0xA9
- URL-koodattu:
%C3%A9
- UTF-8-koodaus:
Rajatapaukset, jotka on otettava huomioon
-
Unicode-merkit: Ei-ASCII-merkit on koodattava UTF-8-muotoon ja sitten prosenttikoodattava.
-
Jo koodatut prosenttimerkit: Prosenttimerkit, jotka ovat osa prosenttikoodauksia, eivät saa olla uudelleen koodattuja.
-
Varatut merkit kyselymerkkijonoissa: Tietyillä merkeillä on erityisiä merkityksiä kyselymerkkijonoissa ja ne on koodattava estämään rakenteen muuttuminen.
URL-purku
Mikä on URL-purku?
URL-purku on URL-koodauksen käänteinen prosessi. Se muuntaa prosenttikoodatut merkit takaisin alkuperäiseen muotoonsa, mikä tekee URL-osoitteesta luettavan ja tulkittavan ihmisille ja järjestelmille.
Purkuprosessi
-
Tunnista prosenttikoodausjaksot: Etsi kaikki
%
-merkit, joita seuraavat kaksi heksadesimaalista numeroa URL-merkkijonosta. -
Muunna heksadesimaali tavuiksi: Käännä jokainen heksadesimaalinen arvo vastaavaksi tavuksi.
-
Purku UTF-8-tavuista (tarvittaessa): Usean tavun sekvenssejä varten yhdistä tavut ja pura ne UTF-8-koodauksella saadaksesi alkuperäisen merkin.
-
Korvaa koodatut jaksot: Korvaa prosenttikoodatut jaksot puretuilla merkeillä.
Esimerkki purkamisesta
-
Koodattu:
hello%20world
%20
kääntyy väliavainmerkiksi' '
- Purettu:
hello world
-
Koodattu:
J%C3%BCrgen
%C3%A4
kääntyy'ü'
:ksi UTF-8:ssa- Purettu:
Jürgen
URL-purku merkitys
URL-purku on välttämätöntä käsiteltäessä käyttäjän syötteitä URL-osoitteista, luettaessa kyselyparametreja tai tulkittaessa verkkopyynnöistä saatua dataa. Se varmistaa, että URL-osoitteesta poimittu tieto on oikeassa, tarkoitetussa muodossa.
Käyttötapaukset
Verkkokehitys
-
Kyselyparametrit: Käyttäjän syötteen koodaus kyselyparametreissa virheiden tai turvallisuusongelmien estämiseksi.
-
Polkuparametrit: Dynaamisen datan turvallinen sisällyttäminen URL-polkuun.
Datan siirto
-
API:t ja verkkopalvelut: Varmistaa, että API:lle lähetetty data on oikein muotoiltu.
-
Kansainvälistäminen: Tukea URL-osoitteille, joissa on eri kielistä peräisin olevia merkkejä.
Turvallisuus
- Injektiotaitojen estäminen: Syötteiden koodaus auttaa vähentämään riskiä, kuten verkkosivustojen skriptihyökkäyksiä (XSS) ja muita injektiovaaroja.
Vaihtoehdot
Vaikka URL-koodaus on olennainen, on olemassa tilanteita, joissa muut koodausmenetelmät voivat olla sopivampia:
-
Base64-koodaus: Käytetään binääridatan koodaamiseen URL-osoitteissa tai kun tarvitaan suurempaa tietotiheyttä.
-
UTF-8-koodaus ilman prosenttikoodausta: Jotkut järjestelmät käyttävät suoraan UTF-8-koodausta, mutta tämä voi aiheuttaa ongelmia, ellei sitä käsitellä oikein.
Ota huomioon sovelluksesi erityispiirteet valitaksesi sopivimman koodausmenetelmän.
Historia
URL-koodaus otettiin käyttöön URL- ja URI (Uniform Resource Identifier) -standardien varhaisissa määritelmissä 1990-luvulla. Tarve johdonmukaiselle tavalta koodata erikoismerkkejä syntyi eri järjestelmien ja merkkijoukkojen moninaisuudesta, joita käytettiin maailmanlaajuisesti.
Tärkeitä virstanpylväitä ovat:
-
RFC 1738 (1994): Määritteli URL-osoitteet ja esitteli prosenttikoodauksen.
-
RFC 3986 (2005): Päivitti URI-syntaksin ja tarkensi koodaus sääntöjä.
Ajan myötä URL-koodauksesta on tullut olennainen osa verkkoteknologioita, mikä varmistaa luotettavan viestinnän eri järjestelmien ja alustojen välillä.
Koodiesimerkit
Tässä on esimerkkejä URL-koodauksen suorittamisesta eri ohjelmointikielillä:
' Excel VBA Esimerkki
Function URLEncode(ByVal Text As String) As String
Dim i As Integer
Dim CharCode As Integer
Dim Char As String
Dim EncodedText As String
For i = 1 To Len(Text)
Char = Mid(Text, i, 1)
CharCode = AscW(Char)
Select Case CharCode
Case 48 To 57, 65 To 90, 97 To 122, 45, 46, 95, 126 ' 0-9, A-Z, a-z, -, ., _, ~
EncodedText = EncodedText & Char
Case Else
If CharCode < 0 Then
' Käsittele Unicode-merkkejä
EncodedText = EncodedText & "%" & Hex(65536 + CharCode)
Else
EncodedText = EncodedText & "%" & Right("0" & Hex(CharCode), 2)
End If
End Select
Next i
URLEncode = EncodedText
End Function
' Käyttö:
' =URLEncode("https://example.com/?name=Jürgen")
Huom: Tuloste voi vaihdella hieman sen mukaan, miten kukin kieli käsittelee varattuja merkkejä ja väliavainmerkkejä (esim. koodaa väliavainmerkkejä %20
tai +
).
SVG-diagrammi URL-koodausprosessista
Turvallisuusnäkökohdat
Oikea URL-koodaus ja -purku ovat kriittisiä turvallisuuden kannalta:
-
Injektiotaitojen estäminen: Syötteiden koodaus auttaa estämään haitallisen koodin suorittamisen, vähentäen riskejä, kuten verkkosivustojen skriptihyökkäyksiä (XSS) ja SQL-injektioita.
-
Datan eheys: Varmistaa, että dataa siirretään ilman muutoksia tai vahinkoja.
-
Standardien noudattaminen: Koodausstandardien noudattaminen estää yhteensopivuusongelmia järjestelmien välillä.
Viitteet
- RFC 3986 - Uniform Resource Identifier (URI): https://tools.ietf.org/html/rfc3986
- Mikä on URL-koodaus ja miten se toimii? https://www.urlencoder.io/learn/
- Prosenttikoodaus: https://en.wikipedia.org/wiki/Percent-encoding
- URL-standardi: https://url.spec.whatwg.org/
- URI.escape on vanhentunut: https://stackoverflow.com/questions/2824126/why-is-uri-escape-deprecated
Yhteenveto
URL-koodaus on olennainen osa verkkokehitystä ja Internet-viestintää. Muuntamalla erikoismerkit turvalliseen muotoon se varmistaa, että URL-osoitteet tulkitaan oikein selaimissa ja palvelimissa, säilyttäen tiedonsiirron eheyden ja turvallisuuden. Tämä työkalu tarjoaa kätevän tavan pakata erikoismerkit URL-osoitteissasi, parantaen yhteensopivuutta ja estäen mahdollisia virheitä tai turvallisuusongelmia.