URL String Escaper: Safely Encode Special Characters in URLs
Veebitööriist, mis aitab erimärke URL-i stringis escape'ida. Sisestage URL ja see tööriist kodeerib selle, escape'ides erimärgid, tagades, et see on veebirakendustes kasutamiseks ohutu.
URL String Escaper
Dokumentatsioon
URL String Escaper Tool
Sissejuhatus
Veebiarenduse ja Interneti suhtluse valdkonnas mängivad URL-id (Uniform Resource Locators) olulist rolli veebis ressursside tuvastamisel. Siiski on URL-idel piirangud nende sisaldatavate märkide osas. Teatud märgid omavad erilisi tähendusi, samas kui teised on URL-ides kasutamiseks ohtlikud, kuna need võivad edastamise käigus valesti tõlgendada või rikutud saada.
URL-i kodeerimine, tuntud ka kui protsendi kodeerimine, on mehhanism, mis muundab erimärgid formaati, mida saab Internetis edastada. See tööriist võimaldab teil sisestada URL-i stringi ja põgeneda erimärkide eest, tagades, et URL on kehtiv ja seda tõlgendatakse õigesti veebibrauserite ja serverite poolt.
URL-i kodeerimise mõistmine
Mis on URL-i kodeerimine?
URL-i kodeerimine hõlmab ohutute ASCII märkide asendamist %
järgnevate kahe kuueteistkümnendiku numbriga, mis esindab märgi ASCII koodi. See tagab, et teave edastatakse Internetis muutumatuna.
Näiteks, tühik märk ' '
asendatakse %20
.
Miks on URL-i kodeerimine vajalik?
URL-e saab Internetis edastada ainult ASCII märgistikuga. Kuna URL-id sisaldavad sageli märke, mis jäävad sellest komplektist välja, peavad need olema muudetud kehtivaks ASCII formaadiks. URL-i kodeerimine tagab, et erimärgid ei põhjusta soovimatuid efekte või vigu veebipäringutes.
Märgid, mis vajavad kodeerimist
Vastavalt RFC 3986 spetsifikatsioonile peavad järgmised märgid olema URL-ides reservitud ja neid tuleb protsendi kodeerimisega asendada, kui neid soovitakse kasutada sõnaselgelt:
- Üldised eraldajad:
:
,/
,?
,#
,[
,]
,@
- Alam-eraldajad:
!
,$
,&
,'
,(
,)
,*
,+
,,
,;
,=
Lisaks tuleb kodeerida kõik mitte-ASCII märgid, sealhulgas Unicode'i märke.
Kuidas URL-i kodeerimine töötab?
Kodeerimise protsess
-
Tuvasta erimärgid: Analüüsi URL-i stringi ja tuvastage märgid, mis ei ole mitte-reservitud ASCII märgid (tähed, numbrid,
-
,.
,_
,~
). -
Muuda ASCII koodiks: Iga erimärgi jaoks hankige selle ASCII või Unicode koodipunkt.
-
Muuda UTF-8 baitide järjestuseks (kui vajalik): Mitte-ASCII märkide jaoks kodeerige märk ühte või mitmesse bitti, kasutades UTF-8 kodeerimist.
-
Muuda kuueteistkümnendikuks: Muutke iga bitti selle kahe-kümne kuueteistkümnendiku vastavuseks.
-
Eelnege protsendi sümboliga: Eelnege iga kuueteistkümnendiku bait
%
märgiga.
Näide kodeerimisest
-
Märk:
' '
(Tühik)- ASCII kood:
32
- Kuueteistkümnendik:
20
- URL-i kodeeritud:
%20
- ASCII kood:
-
Märk:
'é'
- UTF-8 kodeerimine:
0xC3 0xA9
- URL-i kodeeritud:
%C3%A9
- UTF-8 kodeerimine:
Äärmuslikud juhtumid, mida arvesse võtta
-
Unicode märgid: Mitte-ASCII märgid peavad olema kodeeritud UTF-8-s ja seejärel protsendi kodeeritud.
-
Juba kodeeritud protsendi märgid: Protsendi märgid, mis on osa protsendi kodeeringutest, ei tohi uuesti kodeerida.
-
Reservitud märgid päringute stringides: Teatud märgid omavad päringute stringides erilisi tähendusi ja neid tuleks kodeerida, et vältida struktuuri muutmist.
URL-i dekodeerimine
Mis on URL-i dekodeerimine?
URL-i dekodeerimine on URL-i kodeerimise vastupidine protsess. See muundab protsendi kodeeritud märgid tagasi nende algsesse vormi, muutes URL-i loetavaks ja tõlgendatavaks inimestele ja süsteemidele.
Dekodeerimise protsess
-
Tuvasta protsendi kodeerimise järjestused: Otsi kõiki
%
sümboleid, millele järgneb kaks kuueteistkümnendikku URL-i stringis. -
Muuda kuueteistkümendikud baitideks: Tõlgi iga kuueteistkümnendiku väärtus vastavaks baitideks.
-
Dekodeeri UTF-8 baitideks (kui vajalik): Mitme baiti järjestuste jaoks ühenda bitid ja dekodeeri need UTF-8 kodeerimisega, et saada algne märk.
-
Asenda kodeeritud järjestused: Asenda protsendi kodeeritud järjestused dekodeeritud märkidega.
Näide dekodeerimisest
-
Kodeeritud:
hello%20world
%20
tõlgitakse tühikuks' '
- Dekodeeritud:
hello world
-
Kodeeritud:
J%C3%BCrgen
%C3%A4
tõlgitakse'ü'
UTF-8-s- Dekodeeritud:
Jürgen
URL-i dekodeerimise tähtsus
URL-i dekodeerimine on hädavajalik, kui töödeldakse kasutaja sisendit URL-idest, loetakse päringute parameetreid või tõlgendatakse andmeid, mis saadakse veebipäringutest. See tagab, et URL-ist saadud teave on oma õiges, kavandatud vormis.
Kasutusalad
Veebiarendus
-
Päringute parameetrid: Kasutaja sisendi kodeerimine päringute parameetrites, et vältida vigu või turvaprobleeme.
-
Teepäringud: Dynaamilise andmete ohutu lisamine URL-i teedesse.
Andmete edastamine
-
API-d ja veebiteenused: Tagamaks, et API-dele saadetud andmed on korralikult vormindatud.
-
Rahvusvaheline kasutamine: Toetades URL-e, mis sisaldavad erinevate keelte märke.
Turvalisus
- Rünnakute vältimine: Sisendi kodeerimine aitab vähendada rist-saidirünnakute (XSS) ja teiste rünnakute riski.
Alternatiivid
Kuigi URL-i kodeerimine on hädavajalik, on olukordi, kus muud kodeerimismeetodid võivad olla sobivamad:
-
Base64 kodeerimine: Kasutatakse binaarsete andmete kodeerimiseks URL-ides või kui on vajalik suurem teabe tihedus.
-
UTF-8 kodeerimine ilma protsendi kodeerimiseta: Mõned süsteemid kasutavad otse UTF-8 kodeerimist, kuid see võib põhjustada probleeme, kui seda ei käsitleta õigesti.
Kaaluda tuleks teie rakenduse spetsiifikat, et valida kõige sobivam kodeerimismeetod.
Ajalugu
URL-i kodeerimine tutvustati URL-i ja URI (Uniform Resource Identifier) standardite varajastes spetsifikatsioonides 1990. aastatel. Ühtse viisi loomise vajadus erimärkide kodeerimiseks tekkis mitmekesiste süsteemide ja maailmas kasutatavate märgistikute tõttu.
Olulised verstapostid hõlmavad:
-
RFC 1738 (1994): Määratles URL-id ja tutvustas protsendi kodeerimist.
-
RFC 3986 (2005): Uuendas URI süntaksit, täpsustades kodeerimise reegleid.
Aja jooksul on URL-i kodeerimisest saanud veebitehnoloogiate lahutamatu osa, tagades usaldusväärse suhtluse erinevate süsteemide ja platvormide vahel.
Koodinäited
Siin on näited, kuidas URL-i kodeerimist teostada erinevates programmeerimiskeeltes:
1' Excel VBA näide
2Function URLEncode(ByVal Text As String) As String
3 Dim i As Integer
4 Dim CharCode As Integer
5 Dim Char As String
6 Dim EncodedText As String
7
8 For i = 1 To Len(Text)
9 Char = Mid(Text, i, 1)
10 CharCode = AscW(Char)
11 Select Case CharCode
12 Case 48 To 57, 65 To 90, 97 To 122, 45, 46, 95, 126 ' 0-9, A-Z, a-z, -, ., _, ~
13 EncodedText = EncodedText & Char
14 Case Else
15 If CharCode < 0 Then
16 ' Käsitle Unicode märke
17 EncodedText = EncodedText & "%" & Hex(65536 + CharCode)
18 Else
19 EncodedText = EncodedText & "%" & Right("0" & Hex(CharCode), 2)
20 End If
21 End Select
22 Next i
23 URLEncode = EncodedText
24End Function
25
26' Kasutamine:
27' =URLEncode("https://example.com/?name=Jürgen")
28
1% MATLAB näide
2function encodedURL = urlEncode(url)
3 import java.net.URLEncoder
4 encodedURL = char(URLEncoder.encode(url, 'UTF-8'));
5end
6
7% Kasutamine:
8% encodedURL = urlEncode('https://example.com/?name=Jürgen');
9
1## Ruby näide
2require 'uri'
3
4url = 'https://example.com/path?query=hello world&name=Jürgen'
5encoded_url = URI::DEFAULT_PARSER.escape(url)
6puts encoded_url
7## Väljund: https://example.com/path?query=hello%20world&name=J%C3%BCrgen
8
1// Rust näide
2use url::form_urlencoded;
3
4fn main() {
5 let url = "https://example.com/path?query=hello world&name=Jürgen";
6 let encoded_url = percent_encode(url);
7 println!("{}", encoded_url);
8 // Väljund: https://example.com/path%3Fquery%3Dhello%20world%26name%3DJ%C3%BCrgen
9}
10
11fn percent_encode(input: &str) -> String {
12 use percent_encoding::{utf8_percent_encode, NON_ALPHANUMERIC};
13 utf8_percent_encode(input, NON_ALPHANUMERIC).to_string()
14}
15
1## Python näide
2import urllib.parse
3
4url = 'https://example.com/path?query=hello world&name=Jürgen'
5encoded_url = urllib.parse.quote(url, safe=':/?&=')
6print(encoded_url)
7## Väljund: https://example.com/path?query=hello%20world&name=J%C3%BCrgen
8
1// JavaScript näide
2const url = 'https://example.com/path?query=hello world&name=Jürgen';
3const encodedURL = encodeURI(url);
4console.log(encodedURL);
5// Väljund: https://example.com/path?query=hello%20world&name=J%C3%BCrgen
6
1// Java näide
2import java.net.URLEncoder;
3import java.nio.charset.StandardCharsets;
4
5public class URLEncodeExample {
6 public static void main(String[] args) throws Exception {
7 String url = "https://example.com/path?query=hello world&name=Jürgen";
8 String encodedURL = URLEncoder.encode(url, StandardCharsets.UTF_8.toString());
9 // Asenda "+" "%20" tühikutega
10 encodedURL = encodedURL.replace("+", "%20");
11 System.out.println(encodedURL);
12 // Väljund: https%3A%2F%2Fexample.com%2Fpath%3Fquery%3Dhello%20world%26name%3DJ%C3%BCrgen
13 }
14}
15
1// C# näide
2using System;
3using System.Net;
4
5class Program
6{
7 static void Main()
8 {
9 string url = "https://example.com/path?query=hello world&name=Jürgen";
10 string encodedURL = Uri.EscapeUriString(url);
11 Console.WriteLine(encodedURL);
12 // Väljund: https://example.com/path?query=hello%20world&name=J%C3%BCrgen
13 }
14}
15
1<?php
2// PHP näide
3$url = 'https://example.com/path?query=hello world&name=Jürgen';
4$encodedURL = urlencode($url);
5echo $encodedURL;
6// Väljund: https%3A%2F%2Fexample.com%2Fpath%3Fquery%3Dhello+world%26name%3DJ%C3%BCrgen
7?>
8
1// Go näide
2package main
3
4import (
5 "fmt"
6 "net/url"
7)
8
9func main() {
10 urlStr := "https://example.com/path?query=hello world&name=Jürgen"
11 encodedURL := url.QueryEscape(urlStr)
12 fmt.Println(encodedURL)
13 // Väljund: https%3A%2F%2Fexample.com%2Fpath%3Fquery%3Dhello+world%26name%3DJ%25C3%25BCrgen
14}
15
1// Swift näide
2import Foundation
3
4let url = "https://example.com/path?query=hello world&name=Jürgen"
5if let encodedURL = url.addingPercentEncoding(withAllowedCharacters: .urlQueryAllowed) {
6 print(encodedURL)
7 // Väljund: https://example.com/path?query=hello%20world&name=J%C3%BCrgen
8}
9
1## R näide
2url <- "https://example.com/path?query=hello world&name=Jürgen"
3encodedURL <- URLencode(url, reserved = TRUE)
4print(encodedURL)
5## Väljund: https://example.com/path?query=hello%20world&name=J%C3%BCrgen
6
Märkus: Väljund võib veidi varieeruda sõltuvalt sellest, kuidas iga keel käsitleb reservitud märke ja tühikuid (nt, kodeerides tühikuid kui %20
või +
).
SVG diagramm URL-i kodeerimise protsessist
Turvalisuse kaalutlused
Korralik URL-i kodeerimine ja dekodeerimine on kriitilise tähtsusega turvalisuse tagamiseks:
-
Rünnakute vältimine: Kasutaja sisendi kodeerimine aitab vältida pahatahtliku koodi täitmist, vähendades riske nagu rist-saidirünnakud (XSS) ja SQL süstimine.
-
Andmete terviklikkus: Tagab, et andmeid edastatakse muutumatuna või rikutud.
-
Standarditega vastavus: Kodeerimisstandardite järgimine väldib süsteemide vahelisi ühilduvusprobleeme.
Viidatud allikad
- RFC 3986 - Ühtne ressurssi identifikaator (URI): https://tools.ietf.org/html/rfc3986
- Mis on URL-i kodeerimine ja kuidas see töötab? https://www.urlencoder.io/learn/
- Protsendi kodeerimine: https://en.wikipedia.org/wiki/Percent-encoding
- URL-i standard: https://url.spec.whatwg.org/
- URI.escape on aegunud: https://stackoverflow.com/questions/2824126/why-is-uri-escape-deprecated
Järeldus
URL-i kodeerimine on veebiarenduse ja Interneti suhtluse oluline aspekt. Muundades erimärgid ohutuks formaadiks, tagab see, et URL-e tõlgendatakse õigesti brauserite ja serverite poolt, säilitades andmete edastamise terviklikkuse ja turvalisuse. See tööriist pakub mugavat viisi erimärkide põgenemiseks URL-ides, suurendades ühilduvust ja vältides võimalikke vigu või turvaprobleeme.
Tagasiside
Klõpsake tagasiside teatele, et alustada tagasiside andmist selle tööriista kohta