Ferramenta para Escapar Caracteres em URLs de Forma Segura
Uma ferramenta online para escapar caracteres especiais em uma string de URL. Insira uma URL e esta ferramenta a codificará escapando caracteres especiais, garantindo que seja segura para uso em aplicações web.
Codificador de String de URL
Documentação
Ferramenta de Escape de Strings de URL
Introdução
No campo do desenvolvimento web e das comunicações na Internet, as URLs (Localizadores Uniformes de Recursos) desempenham um papel crucial na identificação de recursos na web. No entanto, as URLs têm restrições sobre os caracteres que podem conter. Certos caracteres têm significados especiais, enquanto outros são inseguros para uso em URLs devido à possibilidade de interpretação errônea ou corrupção durante a transmissão.
A codificação de URL, também conhecida como percent-encoding, é um mecanismo para converter caracteres especiais em um formato que pode ser transmitido pela Internet. Esta ferramenta permite que você insira uma string de URL e escape caracteres especiais, garantindo que a URL seja válida e possa ser interpretada corretamente por navegadores e servidores web.
Entendendo a Codificação de URL
O que é Codificação de URL?
A codificação de URL envolve substituir caracteres ASCII inseguros por um %
seguido de dois dígitos hexadecimais representando o código ASCII do caractere. Isso garante que as informações sejam transmitidas pela Internet sem alteração.
Por exemplo, o caractere de espaço ' '
é substituído por %20
.
Por que a Codificação de URL é Necessária?
As URLs só podem ser enviadas pela Internet usando o conjunto de caracteres ASCII. Como as URLs frequentemente contêm caracteres fora desse conjunto, elas devem ser convertidas em um formato ASCII válido. A codificação de URL garante que caracteres especiais não causem efeitos ou erros indesejados em solicitações web.
Caracteres que Precisam de Codificação
De acordo com a especificação RFC 3986, os seguintes caracteres são reservados em URLs e devem ser percent-encoded se forem usados literalmente:
- Delimitadores gerais:
:
,/
,?
,#
,[
,]
,@
- Sub-delimitadores:
!
,$
,&
,'
,(
,)
,*
,+
,,
,;
,=
Além disso, quaisquer caracteres não ASCII, incluindo caracteres em Unicode, devem ser codificados.
Como Funciona a Codificação de URL?
O Processo de Codificação
-
Identificar Caracteres Especiais: Analise a string de URL e identifique caracteres que não são caracteres ASCII não reservados (letras, dígitos,
-
,.
,_
,~
). -
Converter para Código ASCII: Para cada caractere especial, obtenha seu ponto de código ASCII ou Unicode.
-
Converter para Sequência de Bytes UTF-8 (se necessário): Para caracteres não ASCII, codifique o caractere em um ou mais bytes usando a codificação UTF-8.
-
Converter para Hexadecimal: Converta cada byte para seu equivalente hexadecimal de dois dígitos.
-
Prefixar com o Símbolo de Percentagem: Anteponha cada byte hexadecimal com um sinal de
%
.
Exemplo de Codificação
-
Caractere:
' '
(Espaço)- Código ASCII:
32
- Hexadecimal:
20
- Codificado em URL:
%20
- Código ASCII:
-
Caractere:
'é'
- Codificação UTF-8:
0xC3 0xA9
- Codificado em URL:
%C3%A9
- Codificação UTF-8:
Casos Limite a Considerar
-
Caracteres Unicode: Caracteres não ASCII devem ser codificados em UTF-8 e, em seguida, percent-encoded.
-
Sinais de Percentagem Já Codificados: Sinais de porcentagem que fazem parte de percent-encodings não devem ser re-codificados.
-
Caracteres Reservados em Strings de Consulta: Certos caracteres têm significados especiais em strings de consulta e devem ser codificados para evitar alterar a estrutura.
Decodificação de URL
O que é Decodificação de URL?
A decodificação de URL é o processo reverso da codificação de URL. Ela converte caracteres percent-encoded de volta para sua forma original, tornando a URL legível e interpretável por humanos e sistemas.
Processo de Decodificação
-
Identificar Sequências de Percent-Encoding: Localize todos os símbolos
%
seguidos por dois dígitos hexadecimais na string de URL. -
Converter Hexadecimal em Bytes: Traduza cada valor hexadecimal para seu byte correspondente.
-
Decodificar Bytes UTF-8 (se necessário): Para sequências de múltiplos bytes, combine os bytes e decodifique-os usando a codificação UTF-8 para obter o caractere original.
-
Substituir Sequências Codificadas: Substitua as sequências percent-encoded pelos caracteres decodificados.
Exemplo de Decodificação
-
Codificado:
hello%20world
%20
traduz-se para um espaço' '
- Decodificado:
hello world
-
Codificado:
J%C3%BCrgen
%C3%A4
traduz-se para'ü'
em UTF-8- Decodificado:
Jürgen
Importância da Decodificação de URL
A decodificação de URL é essencial ao processar entradas de usuários a partir de URLs, ler parâmetros de consulta ou interpretar dados recebidos de solicitações web. Ela garante que as informações extraídas de uma URL estejam em sua forma adequada e pretendida.
Casos de Uso
Desenvolvimento Web
-
Parâmetros de Consulta: Codificando entradas de usuários em parâmetros de consulta para evitar erros ou vulnerabilidades de segurança.
-
Parâmetros de Caminho: Incluindo dados dinâmicos de forma segura em caminhos de URL.
Transmissão de Dados
-
APIs e Serviços Web: Garantindo que os dados enviados para APIs estejam formatados corretamente.
-
Internacionalização: Suportando URLs com caracteres de várias línguas.
Segurança
- Prevenindo Ataques de Injeção: Codificando entradas para mitigar o risco de scripts entre sites (XSS) e outros ataques de injeção.
Alternativas
Embora a codificação de URL seja essencial, existem cenários em que outros métodos de codificação podem ser mais apropriados:
-
Codificação Base64: Usada para codificar dados binários dentro de URLs ou quando uma maior densidade de informações é necessária.
-
Codificação UTF-8 sem Percent-Encoding: Alguns sistemas usam codificação UTF-8 diretamente, mas isso pode causar problemas se não for tratado corretamente.
Considere as especificidades de sua aplicação para escolher o método de codificação mais adequado.
História
A codificação de URL foi introduzida com as especificações iniciais dos padrões de URL e URI (Identificador Uniforme de Recursos) na década de 1990. A necessidade de uma maneira consistente de codificar caracteres especiais surgiu dos diversos sistemas e conjuntos de caracteres usados em todo o mundo.
Marcos importantes incluem:
-
RFC 1738 (1994): Definiu URLs e introduziu percent-encoding.
-
RFC 3986 (2005): Atualizou a sintaxe URI, refinando as regras para codificação.
Com o tempo, a codificação de URL tornou-se parte integrante das tecnologias web, garantindo comunicação confiável entre diferentes sistemas e plataformas.
Exemplos de Código
Aqui estão exemplos de como realizar a codificação de URL em várias linguagens de programação:
1' Exemplo em Excel VBA
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 ' Lidar com caracteres 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' Uso:
27' =URLEncode("https://example.com/?name=Jürgen")
28
1% Exemplo em MATLAB
2function encodedURL = urlEncode(url)
3 import java.net.URLEncoder
4 encodedURL = char(URLEncoder.encode(url, 'UTF-8'));
5end
6
7% Uso:
8% encodedURL = urlEncode('https://example.com/?name=Jürgen');
9
1## Exemplo em 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## Saída: https://example.com/path?query=hello%20world&name=J%C3%BCrgen
8
1// Exemplo em 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 // Saída: 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## Exemplo em 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## Saída: https://example.com/path?query=hello%20world&name=J%C3%BCrgen
8
1// Exemplo em JavaScript
2const url = 'https://example.com/path?query=hello world&name=Jürgen';
3const encodedURL = encodeURI(url);
4console.log(encodedURL);
5// Saída: https://example.com/path?query=hello%20world&name=J%C3%BCrgen
6
1// Exemplo em 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 "+" por "%20" para espaços
10 encodedURL = encodedURL.replace("+", "%20");
11 System.out.println(encodedURL);
12 // Saída: https%3A%2F%2Fexample.com%2Fpath%3Fquery%3Dhello%20world%26name%3DJ%C3%BCrgen
13 }
14}
15
1// Exemplo em 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 // Saída: https://example.com/path?query=hello%20world&name=J%C3%BCrgen
13 }
14}
15
1<?php
2// Exemplo em PHP
3$url = 'https://example.com/path?query=hello world&name=Jürgen';
4$encodedURL = urlencode($url);
5echo $encodedURL;
6// Saída: https%3A%2F%2Fexample.com%2Fpath%3Fquery%3Dhello+world%26name%3DJ%C3%BCrgen
7?>
8
1// Exemplo em 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 // Saída: https%3A%2F%2Fexample.com%2Fpath%3Fquery%3Dhello+world%26name%3DJ%25C3%25BCrgen
14}
15
1// Exemplo em 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 // Saída: https://example.com/path?query=hello%20world&name=J%C3%BCrgen
8}
9
1## Exemplo em R
2url <- "https://example.com/path?query=hello world&name=Jürgen"
3encodedURL <- URLencode(url, reserved = TRUE)
4print(encodedURL)
5## Saída: https://example.com/path?query=hello%20world&name=J%C3%BCrgen
6
Nota: A saída pode variar ligeiramente com base em como cada linguagem lida com caracteres reservados e espaços (por exemplo, codificando espaços como %20
ou +
).
Diagrama SVG do Processo de Codificação de URL
Considerações de Segurança
A codificação e decodificação adequadas de URL são críticas para a segurança:
-
Prevenir Ataques de Injeção: Codificar entradas de usuários ajuda a evitar que códigos maliciosos sejam executados, mitigando riscos como scripts entre sites (XSS) e injeção SQL.
-
Integridade dos Dados: Garante que os dados sejam transmitidos sem alteração ou corrupção.
-
Conformidade com Padrões: Cumprir os padrões de codificação evita problemas de interoperabilidade entre sistemas.
Referências
- RFC 3986 - Identificador Uniforme de Recursos (URI): https://tools.ietf.org/html/rfc3986
- O que é Codificação de URL e como funciona? https://www.urlencoder.io/learn/
- Percent-encoding: https://pt.wikipedia.org/wiki/Codifica%C3%A7%C3%A3o_por_porcentagem
- Padrão de URL: https://url.spec.whatwg.org/
- URI.escape está obsoleto: https://stackoverflow.com/questions/2824126/why-is-uri-escape-deprecated
Conclusão
A codificação de URL é um aspecto essencial do desenvolvimento web e das comunicações na Internet. Ao converter caracteres especiais em um formato seguro, ela garante que as URLs sejam corretamente interpretadas por navegadores e servidores, mantendo a integridade e segurança da transmissão de dados. Esta ferramenta fornece uma maneira conveniente de escapar caracteres especiais em suas URLs, melhorando a compatibilidade e prevenindo potenciais erros ou vulnerabilidades de segurança.
Feedback
Clique no feedback toast para começar a dar feedback sobre esta ferramenta