Verkkotyökalu URL-merkkijonon erikoismerkkien pakkaamiseen
Verkkotyökalu, joka pakkaa erikoismerkit URL-merkkijonossa. Syötä URL, ja tämä työkalu koodaa sen pakkaamalla erikoismerkit, varmistaen, että se on turvallinen käytettäväksi verkkosovelluksissa.
URL-merkkijonon koodaus
Dokumentaatio
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ä:
1' Excel VBA Esimerkki
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äsittele Unicode-merkkejä
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' Käyttö:
27' =URLEncode("https://example.com/?name=Jürgen")
28
1% MATLAB Esimerkki
2function encodedURL = urlEncode(url)
3 import java.net.URLEncoder
4 encodedURL = char(URLEncoder.encode(url, 'UTF-8'));
5end
6
7% Käyttö:
8% encodedURL = urlEncode('https://example.com/?name=Jürgen');
9
1## Ruby Esimerkki
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## Tuloste: https://example.com/path?query=hello%20world&name=J%C3%BCrgen
8
1// Rust Esimerkki
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 // Tuloste: 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 Esimerkki
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## Tuloste: https://example.com/path?query=hello%20world&name=J%C3%BCrgen
8
1// JavaScript Esimerkki
2const url = 'https://example.com/path?query=hello world&name=Jürgen';
3const encodedURL = encodeURI(url);
4console.log(encodedURL);
5// Tuloste: https://example.com/path?query=hello%20world&name=J%C3%BCrgen
6
1// Java Esimerkki
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 // Korvaa "+" merkillä "%20" väliavainmerkeille
10 encodedURL = encodedURL.replace("+", "%20");
11 System.out.println(encodedURL);
12 // Tuloste: https%3A%2F%2Fexample.com%2Fpath%3Fquery%3Dhello%20world%26name%3DJ%C3%BCrgen
13 }
14}
15
1// C# Esimerkki
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 // Tuloste: https://example.com/path?query=hello%20world&name=J%C3%BCrgen
13 }
14}
15
1<?php
2// PHP Esimerkki
3$url = 'https://example.com/path?query=hello world&name=Jürgen';
4$encodedURL = urlencode($url);
5echo $encodedURL;
6// Tuloste: https%3A%2F%2Fexample.com%2Fpath%3Fquery%3Dhello+world%26name%3DJ%C3%BCrgen
7?>
8
1// Go Esimerkki
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 // Tuloste: https%3A%2F%2Fexample.com%2Fpath%3Fquery%3Dhello+world%26name%3DJ%25C3%25BCrgen
14}
15
1// Swift Esimerkki
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 // Tuloste: https://example.com/path?query=hello%20world&name=J%C3%BCrgen
8}
9
1## R Esimerkki
2url <- "https://example.com/path?query=hello world&name=Jürgen"
3encodedURL <- URLencode(url, reserved = TRUE)
4print(encodedURL)
5## Tuloste: https://example.com/path?query=hello%20world&name=J%C3%BCrgen
6
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.
Palaute
Klikkaa palautetoastia aloittaaksesi palautteen antamisen tästä työkalusta