Eina en línia per escapar caràcters especials en URL
Una eina en línia per escapar caràcters especials en una cadena URL. Introduïu una URL, i aquesta eina la codificarà escapant caràcters especials, assegurant que sigui segura per a l'ús en aplicacions web.
Escapador de cadenes URL
Documentació
Eina eina d'escapament de cadenes d'URL
Introducció
En el món del desenvolupament web i les comunicacions d'Internet, les URL (Localitzadors Uniformes de Recursos) juguen un paper crucial en la identificació de recursos a la web. No obstant això, les URL tenen restriccions sobre els caràcters que poden contenir. Certs caràcters tenen significats especials, mentre que altres no són segurs per a l'ús en URL a causa de la possibilitat de malinterpretació o corrupció durant la transmissió.
L'escapament d'URL, també conegut com a percent-escapament, és un mecanisme per convertir caràcters especials en un format que es pot transmetre per Internet. Aquesta eina et permet introduir una cadena d'URL i escapar els caràcters especials, assegurant que la URL sigui vàlida i que pugui ser interpretada correctament pels navegadors web i els servidors.
Comprendre l'escapament d'URL
Què és l'escapament d'URL?
L'escapament d'URL implica substituir caràcters ASCII no segurs per un %
seguit de dos dígits hexadecimals que representen el codi ASCII del caràcter. Assegura que la informació es transmet per Internet sense alteració.
Per exemple, el caràcter d'espai ' '
es reemplaça per %20
.
Per què és necessari l'escapament d'URL?
Les URL només es poden enviar per Internet utilitzant el conjunt de caràcters ASCII. Atès que les URL sovint contenen caràcters fora d'aquest conjunt, han de ser convertides en un format ASCII vàlid. L'escapament d'URL garanteix que els caràcters especials no causin efectes no desitjats o errors en les sol·licituds web.
Caràcters que necessiten escapament
Segons l'especificació RFC 3986, els següents caràcters estan reservats en les URL i han de ser percent-escapats si s'han d'utilitzar literalment:
- Delimitadors generals:
:
,/
,?
,#
,[
,]
,@
- Sub-delimitadors:
!
,$
,&
,'
,(
,)
,*
,+
,,
,;
,=
A més, qualsevol caràcter no ASCII, incloent caràcters en Unicode, ha de ser escapats.
Com funciona l'escapament d'URL?
El procés d'escapament
-
Identificar caràcters especials: Analitzar la cadena d'URL i identificar caràcters que no són caràcters ASCII no reservats (lletres, dígits,
-
,.
,_
,~
). -
Convertir a codi ASCII: Per a cada caràcter especial, obtenir el seu punt de codi ASCII o Unicode.
-
Convertir a seqüència de bytes UTF-8 (si és necessari): Per a caràcters no ASCII, codificar el caràcter en un o més bytes utilitzant la codificació UTF-8.
-
Convertir a hexadecimal: Convertir cada byte al seu equivalent hexadecimal de dos dígits.
-
Prefixar amb el símbol percent: Precedir cada byte hexadecimal amb un signe
%
.
Exemple d'escapament
-
Caràcter:
' '
(Espai)- Codi ASCII:
32
- Hexadecimal:
20
- Escapat d'URL:
%20
- Codi ASCII:
-
Caràcter:
'é'
- Codificació UTF-8:
0xC3 0xA9
- Escapat d'URL:
%C3%A9
- Codificació UTF-8:
Casos límit a considerar
-
Caràcters Unicode: Els caràcters no ASCII han de ser escapats en UTF-8 i després percent-escapats.
-
Signe percent ja escapats: Els signes percent que són part d'escapaments percent no han de ser re-escapats.
-
Caràcters reservats en cadenes de consulta: Certs caràcters tenen significats especials en cadenes de consulta i haurien d'estar escapats per evitar alterar l'estructura.
Desescapament d'URL
Què és el desescapament d'URL?
El desescapament d'URL és el procés invers de l'escapament d'URL. Converteix els caràcters escapats per percent en la seva forma original, fent que la URL sigui llegible i interpretable per humans i sistemes.
Procés de desescapament
-
Identificar seqüències d'escapament percent: Localitzar tots els símbols
%
seguits de dos dígits hexadecimals en la cadena d'URL. -
Convertir hexadecimal a bytes: Traducir cada valor hexadecimal al seu byte corresponent.
-
Descodificar bytes UTF-8 (si és necessari): Per a seqüències de múltiples bytes, combinar els bytes i descodificar-los utilitzant la codificació UTF-8 per obtenir el caràcter original.
-
Substituir seqüències escapades: Substituir les seqüències escapades per percent pels caràcters descodificats.
Exemple de desescapament
-
Escapat:
hello%20world
%20
tradueix a un espai' '
- Desescapat:
hello world
-
Escapat:
J%C3%BCrgen
%C3%A4
tradueix a'ü'
en UTF-8- Desescapat:
Jürgen
Importància del desescapament d'URL
El desescapament d'URL és essencial quan es processa l'entrada de l'usuari a partir d'URL, llegint paràmetres de consulta o interpretant dades rebudes de sol·licituds web. Assegura que la informació extreta d'una URL estigui en la seva forma adequada i prevista.
Casos d'ús
Desenvolupament web
-
Paràmetres de consulta: Escapament de l'entrada de l'usuari en paràmetres de consulta per evitar errors o vulnerabilitats de seguretat.
-
Paràmetres de ruta: Inclusió segura de dades dinàmiques en rutes d'URL.
Transmissió de dades
-
APIs i serveis web: Assegurar que les dades enviades a les APIs estiguin correctament formatades.
-
Internacionalització: Suport a URL amb caràcters de diverses llengües.
Seguretat
- Prevenció d'atacs d'injecció: Escapament d'entrades per mitigar el risc de scripts entre llocs (XSS) i altres atacs d'injecció.
Alternatives
Si bé l'escapament d'URL és essencial, hi ha escenaris on altres mètodes d'escapament podrien ser més apropiats:
-
Escapament Base64: Utilitzat per escapar dades binàries dins d'URL o quan es requereix una major densitat d'informació.
-
Codificació UTF-8 sense escapament percent: Alguns sistemes utilitzen la codificació UTF-8 directament, però això pot causar problemes si no es gestiona correctament.
Considera les especificitats de la teva aplicació per triar el mètode d'escapament més adequat.
Història
L'escapament d'URL es va introduir amb les primeres especificacions dels estàndards d'URL i URI (Identificador de Recursos Uniforme) a la dècada de 1990. La necessitat d'una manera consistent d'escapar caràcters especials va sorgir dels diversos sistemes i conjunts de caràcters utilitzats a tot el món.
Fites clau inclouen:
-
RFC 1738 (1994): Va definir les URL i va introduir l'escapament percent.
-
RFC 3986 (2005): Va actualitzar la sintaxi de URI, refinant les regles per a l'escapament.
Amb el temps, l'escapament d'URL s'ha convertit en un aspecte integral de les tecnologies web, assegurant una comunicació fiable entre diferents sistemes i plataformes.
Exemples de codi
Aquí hi ha exemples de com realitzar l'escapament d'URL en diversos llenguatges de programació:
1' Exemple de VBA d'Excel
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 ' Gestionar caràcters Unicode
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' Ús:
27' =URLEncode("https://example.com/?name=Jürgen")
28
1% Exemple de MATLAB
2function encodedURL = urlEncode(url)
3 import java.net.URLEncoder
4 encodedURL = char(URLEncoder.encode(url, 'UTF-8'));
5end
6
7% Ús:
8% encodedURL = urlEncode('https://example.com/?name=Jürgen');
9
1## Exemple de Ruby
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## Sortida: https://example.com/path?query=hello%20world&name=J%C3%BCrgen
8
1// Exemple de Rust
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 // Sortida: 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## Exemple de Python
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## Sortida: https://example.com/path?query=hello%20world&name=J%C3%BCrgen
8
1// Exemple de JavaScript
2const url = 'https://example.com/path?query=hello world&name=Jürgen';
3const encodedURL = encodeURI(url);
4console.log(encodedURL);
5// Sortida: https://example.com/path?query=hello%20world&name=J%C3%BCrgen
6
1// Exemple de Java
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 // Substituir "+" per "%20" per espais
10 encodedURL = encodedURL.replace("+", "%20");
11 System.out.println(encodedURL);
12 // Sortida: https%3A%2F%2Fexample.com%2Fpath%3Fquery%3Dhello%20world%26name%3DJ%C3%BCrgen
13 }
14}
15
1// Exemple de C#
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 // Sortida: https://example.com/path?query=hello%20world&name=J%C3%BCrgen
13 }
14}
15
1<?php
2// Exemple de PHP
3$url = 'https://example.com/path?query=hello world&name=Jürgen';
4$encodedURL = urlencode($url);
5echo $encodedURL;
6// Sortida: https%3A%2F%2Fexample.com%2Fpath%3Fquery%3Dhello+world%26name%3DJ%C3%BCrgen
7?>
8
1// Exemple de Go
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 // Sortida: https%3A%2F%2Fexample.com%2Fpath%3Fquery%3Dhello+world%26name%3DJ%25C3%25BCrgen
14}
15
1// Exemple de Swift
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 // Sortida: https://example.com/path?query=hello%20world&name=J%C3%BCrgen
8}
9
1## Exemple de R
2url <- "https://example.com/path?query=hello world&name=Jürgen"
3encodedURL <- URLencode(url, reserved = TRUE)
4print(encodedURL)
5## Sortida: https://example.com/path?query=hello%20world&name=J%C3%BCrgen
6
Nota: La sortida pot variar lleugerament segons com cada llenguatge gestiona els caràcters reservats i els espais (per exemple, escapant espais com %20
o +
).
Diagrama SVG del procés d'escapament d'URL
Consideracions de seguretat
L'escapament i el desescapament d'URL adequats són crítics per a la seguretat:
-
Prevenir atacs d'injecció: L'escapament de l'entrada de l'usuari ajuda a prevenir l'execució de codi maliciós, mitigant riscos com scripts entre llocs (XSS) i injeccions SQL.
-
Integritat de dades: Assegura que les dades es transmetin sense alteració ni corrupció.
-
Compliment dels estàndards: Adherir-se als estàndards d'escapament evita problemes d'interoperabilitat entre sistemes.
Referències
- RFC 3986 - Identificador de Recursos Uniforme (URI): https://tools.ietf.org/html/rfc3986
- Què és l'escapament d'URL i com funciona? https://www.urlencoder.io/learn/
- Percent-escapament: https://en.wikipedia.org/wiki/Percent-encoding
- Estàndard d'URL: https://url.spec.whatwg.org/
- URI.escape és obsolet: https://stackoverflow.com/questions/2824126/why-is-uri-escape-deprecated
Conclusió
L'escapament d'URL és un aspecte essencial del desenvolupament web i les comunicacions d'Internet. En convertir caràcters especials en un format segur, assegura que les URL siguin interpretades correctament pels navegadors i servidors, mantenint la integritat i la seguretat de la transmissió de dades. Aquesta eina proporciona una manera convenient d'escapar caràcters especials en les teves URL, millorant la compatibilitat i prevenint possibles errors o vulnerabilitats de seguretat.
Retroalimentació
Feu clic al toast de feedback per començar a donar feedback sobre aquesta eina