URL simbolių koduotojas
URL String Escaper Tool
Įvadas
Interneto kūrimo ir komunikacijos srityje URL (Universalus išteklių lokatorius) vaidina svarbų vaidmenį identifikuojant išteklius internete. Tačiau URL turi apribojimų dėl simbolių, kuriuos gali turėti. Tam tikri simboliai turi specialias reikšmes, o kiti yra nesaugūs naudoti URL, nes gali būti neteisingai interpretuojami arba sugadinti perduodant.
URL kodavimas, dar žinomas kaip procentinis kodavimas, yra mechanizmas, skirtas specialiems simboliams konvertuoti į formatą, kuris gali būti perduodamas per internetą. Šis įrankis leidžia jums įvesti URL eilutę ir pabėgti specialius simbolius, užtikrinant, kad URL būtų galiojantis ir galėtų būti teisingai interpretuojamas interneto naršyklėse ir serveriuose.
URL kodavimo supratimas
Kas yra URL kodavimas?
URL kodavimas apima nesaugių ASCII simbolių pakeitimą simboliu %
, po kurio seka du šešioliktainiai skaitmenys, atitinkantys simbolio ASCII kodą. Tai užtikrina, kad informacija būtų perduodama per internetą be pakeitimų.
Pavyzdžiui, tarp simbolių tarpas ' '
pakeičiamas į %20
.
Kodėl reikalingas URL kodavimas?
URL gali būti siunčiami per internetą tik naudojant ASCII simbolių rinkinį. Kadangi URL dažnai turi simbolių, kurie yra už šio rinkinio ribų, jie turi būti konvertuojami į galiojantį ASCII formatą. URL kodavimas garantuoja, kad specialūs simboliai nesukels nepageidaujamų efektų ar klaidų interneto užklausose.
Simboliai, kuriuos reikia koduoti
Pagal RFC 3986 specifikaciją, šie simboliai yra rezervuoti URL ir turi būti procentiškai koduojami, jei jie naudojami pažodžiui:
- Bendrieji skyrikliai:
:
,/
,?
,#
,[
,]
,@
- Sub-skyrikliai:
!
,$
,&
,'
,(
,)
,*
,+
,,
,;
,=
Be to, visi ne-ASCII simboliai, įskaitant simbolius Unicode, turi būti koduojami.
Kaip veikia URL kodavimas?
Kodavimo procesas
-
Identifikuoti specialius simbolius: Analizuokite URL eilutę ir identifikuokite simbolius, kurie nėra neapibrėžti ASCII simboliai (raidės, skaičiai,
-
,.
,_
,~
). -
Konvertuoti į ASCII kodą: Kiekvienam specialiam simboliui gauti jo ASCII arba Unicode kodą.
-
Konvertuoti į UTF-8 baitų seką (jei reikia): Ne-ASCII simboliams koduoti simbolį į vieną ar daugiau baitų naudojant UTF-8 kodavimą.
-
Konvertuoti į šešioliktainį: Kiekvieną baitą konvertuoti į jo dviženklį šešioliktainį ekvivalentą.
-
Pridėti procento simbolį: Prie kiekvieno šešioliktainio baito pridėti simbolį
%
.
Pavyzdys kodavimo
-
Simbolis:
' '
(tarpas)- ASCII kodas:
32
- Šešioliktainis:
20
- URL koduotas:
%20
- ASCII kodas:
-
Simbolis:
'é'
- UTF-8 kodavimas:
0xC3 0xA9
- URL koduotas:
%C3%A9
- UTF-8 kodavimas:
Kraštutiniai atvejai, kuriuos reikia apsvarstyti
-
Unicode simboliai: Ne-ASCII simboliai turi būti koduojami UTF-8 ir tada procentiškai koduojami.
-
Jau koduoti procento simboliai: Procento simboliai, kurie yra procentiniuose kodavimuose, neturi būti vėl koduojami.
-
Rezervuoti simboliai užklausų eilutėse: Tam tikri simboliai turi specialias reikšmes užklausų eilutėse ir turėtų būti koduojami, kad būtų išvengta struktūros pakeitimo.
URL dekodavimas
Kas yra URL dekodavimas?
URL dekodavimas yra priešingas URL kodavimo procesas. Jis konvertuoja procentiškai koduotus simbolius atgal į jų pradinę formą, padarydamas URL skaitomą ir interpretuojamą žmonėms ir sistemoms.
Dekodavimo procesas
-
Identifikuoti procentinį kodavimo sekas: Raskite visus
%
simbolius, po kurių seka du šešioliktainiai skaitmenys URL eilutėje. -
Konvertuoti šešioliktainį į baitus: Išverskite kiekvieną šešioliktainį į atitinkamą baitą.
-
Dekoduoti UTF-8 baitus (jei reikia): Daugiabaitėms sekos sujungti baitus ir dekoduoti juos naudojant UTF-8 kodavimą, kad gautumėte pradinį simbolį.
-
Pakeisti koduotas sekas: Pakeisti procentiškai koduotas sekas dekoduotais simboliais.
Pavyzdys dekodavimo
-
Koduota:
hello%20world
%20
verčiasi į tarpą' '
- Dekoduota:
hello world
-
Koduota:
J%C3%BCrgen
%C3%A4
verčiasi į'ü'
UTF-8- Dekoduota:
Jürgen
URL dekodavimo svarba
URL dekodavimas yra būtinas apdorojant vartotojo įvestį iš URL, skaitant užklausų parametrus arba interpretuojant duomenis, gautus iš interneto užklausų. Tai užtikrina, kad iš URL išgauta informacija būtų tinkamoje, numatytoje formoje.
Naudojimo atvejai
Interneto kūrimas
-
Užklausų parametrai: Kodavimas vartotojo įvesties užklausų parametruose, kad būtų išvengta klaidų ar saugumo pažeidimų.
-
Kelio parametrai: Saugiai įtraukti dinaminę informaciją į URL kelius.
Duomenų perdavimas
-
API ir interneto paslaugos: Užtikrinant, kad API siunčiami duomenys būtų tinkamai suformatuoti.
-
Tarptautinimas: Palaikant URL su simboliais iš įvairių kalbų.
Saugumas
- Išvengiant injekcijos atakų: Kodavimas įvestims, kad būtų sumažinta kryžminio svetainių skriptavimo (XSS) ir kitų injekcijos atakų rizika.
Alternatyvos
Nors URL kodavimas yra būtinas, yra scenarijų, kur kitų kodavimo metodų naudojimas gali būti tinkamesnis:
-
Base64 kodavimas: Naudojamas binariniams duomenims koduoti URL arba kai reikia didesnio informacijos tankio.
-
UTF-8 kodavimas be procentinio kodavimo: Kai kurios sistemos tiesiogiai naudoja UTF-8 kodavimą, tačiau tai gali sukelti problemų, jei nėra tinkamai tvarkoma.
Apsvarstykite savo programos specifiką, kad pasirinktumėte tinkamiausią kodavimo metodą.
Istorija
URL kodavimas buvo pristatytas su ankstyvosiomis URL ir URI (Universalus išteklių identifikatorius) standartų specifikacijomis 1990-aisiais. Nuolatinis būdas koduoti specialius simbolius kilo iš įvairių sistemų ir pasaulyje naudojamų simbolių rinkinių poreikio.
Pagrindiniai įvykiai:
-
RFC 1738 (1994): Apibrėžė URL ir pristatė procentinį kodavimą.
-
RFC 3986 (2005): Atnaujino URI sintaksę, patikslindamas kodavimo taisykles.
Per laiką URL kodavimas tapo integraline interneto technologijų dalimi, užtikrinančia patikimą komunikaciją tarp skirtingų sistemų ir platformų.
Kodo pavyzdžiai
Štai pavyzdžiai, kaip atlikti URL kodavimą įvairiose programavimo kalbose:
' Excel VBA pavyzdys
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
' Tvarkyti Unicode simbolius
EncodedText = EncodedText & "%" & Hex(65536 + CharCode)
Else
EncodedText = EncodedText & "%" & Right("0" & Hex(CharCode), 2)
End If
End Select
Next i
URLEncode = EncodedText
End Function
' Naudojimas:
' =URLEncode("https://example.com/?name=Jürgen")
Pastaba: Išvestis gali šiek tiek skirtis priklausomai nuo to, kaip kiekviena kalba tvarko rezervuotus simbolius ir tarpus (pvz., koduojant tarpus kaip %20
arba +
).
SVG diagrama apie URL kodavimo procesą
Saugumo svarstymai
Tinkamas URL kodavimas ir dekodavimas yra kritiškai svarbūs saugumui:
-
Išvengiant injekcijos atakų: Kodavimas vartotojo įvesties padeda užkirsti kelią kenksmingo kodo vykdymui, mažinant kryžminio svetainių skriptavimo (XSS) ir SQL injekcijos riziką.
-
Duomenų vientisumas: Užtikrina, kad duomenys būtų perduodami be pakeitimų ar sugadinimų.
-
Atitikimas standartams: Laikymasis kodavimo standartų išvengia tarpusavio suderinamumo problemų tarp sistemų.
Nuorodos
- RFC 3986 - Universalus išteklių identifikatorius (URI): https://tools.ietf.org/html/rfc3986
- Kas yra URL kodavimas ir kaip jis veikia? https://www.urlencoder.io/learn/
- Procentinis kodavimas: https://en.wikipedia.org/wiki/Percent-encoding
- URL standartas: https://url.spec.whatwg.org/
- URI.escape yra pasenęs: https://stackoverflow.com/questions/2824126/why-is-uri-escape-deprecated
Išvada
URL kodavimas yra esminis interneto kūrimo ir komunikacijos aspektas. Paversdamas specialius simbolius saugiu formatu, jis užtikrina, kad URL būtų teisingai interpretuojami naršyklėse ir serveriuose, išlaikant duomenų perdavimo vientisumą ir saugumą. Šis įrankis suteikia patogų būdą pabėgti specialius simbolius jūsų URL, didinant suderinamumą ir užkertant kelią galimoms klaidoms ar saugumo pažeidimams.