Codificação de URL
A codificação de URL representa um byte num componente URI por um sinal de percentagem seguido de dois algarismos hexadecimais.
Definição
A codificação de URL, mais precisamente codificação percentual, representa um byte por % e dois algarismos hexadecimais. Um espaço pode ser %20 e o próprio sinal de percentagem, %25.
Os caracteres URI não reservados—letras ASCII, algarismos, -, ., _ e ~—ficam normalmente inalterados. Os restantes dependem da posição e função.
Como funciona
Texto fora de ASCII é primeiro convertido em bytes, normalmente UTF-8, e os bytes necessários são codificados individualmente. Assim, café torna-se caf%C3%A9.
Caracteres reservados como /, ?, #, & e = estruturam o URL. A codificação depende de serem segmento de caminho, parâmetro, fragmento ou outro componente.
Espaços e dados de formulários
A codificação percentual escreve espaço como %20. O formato application/x-www-form-urlencoded, usado em consultas e formulários HTML, usa frequentemente +; um mais literal torna-se então %2B.
As bibliotecas oferecem normalmente funções distintas para URL, segmentos e valores de parâmetros. A função específica trata corretamente os separadores estruturais.
Segurança e erros frequentes
A codificação é reversível e não é criptografia. Valores sensíveis podem continuar visíveis no histórico, registos, dados Referer e arquivos do servidor.
Voltar a codificar uma percentagem já codificada gera dupla codificação: %20 torna-se %2520. Os dados descodificados devem ser validados, pois a codificação não torna segura uma entrada maliciosa.
%20 é o byte codificado de um espaço. + significa espaço apenas na codificação de formulários; noutro contexto pode ser literal.
Normalmente não. Codifique segmentos e valores com a função do componente para que os separadores estruturais mantenham o significado.
Não. Garante compatibilidade sintática, mas não confidencialidade, integridade ou autenticidade.