Base64 vs codificação de URL
Base64 e codificação de URL resolvem problemas diferentes: representar bytes como texto versus tornar componentes de URL seguros.
Base64 e codificação de URL são mecanismos de codificação, mas não são substitutos. Base64 representa bytes como texto. Codificação de URL torna o texto seguro dentro de uma parte específica da URL.
Use o mecanismo errado e o valor ainda pode parecer codificado, mas vai quebrar no lugar onde você o colocou.
Base64 representa bytes
Base64 transforma dados binários em um alfabeto de texto. É útil quando o sistema espera texto, mas você precisa transportar bytes.
Exemplos comuns:
- Embutir pequenos valores binários em JSON.
- Inspecionar segmentos de token que usam Base64URL.
- Mover bytes por canais só de texto.
- Criar data URLs para assets pequenos.
Use o Codificador / Decodificador Base64 quando a pergunta for: “que bytes ou texto este valor Base64 representa?”
Codificação de URL protege limites da URI
Codificação de URL, também chamada codificação percentual, escapa caracteres com significado especial em URLs. Por exemplo, um valor de parâmetro de query pode precisar preservar ?, &, =, / ou espaços.
Exemplos comuns:
- Codificar uma busca.
- Passar uma URL de redirect aninhada.
- Montar parâmetros de callback OAuth.
- Decodificar query strings copiadas.
Use o Codificador / Decodificador de URL quando a pergunta for: “este texto sobrevive dentro deste componente da URL?”
Base64URL é um caso especial
Base64URL altera o alfabeto Base64 para ficar mais seguro em URLs, em geral trocando + e / e às vezes omitindo padding. JWTs usam essa forma.
Base64URL ainda trata de representar bytes como texto. Não substitui codificação percentual para parâmetros de URL arbitrários.
Como escolher
Pergunte para onde o valor vai:
- Dados binários em texto: Base64.
- Texto em parâmetro de query: codifique a URL.
- URL aninhada dentro de outra: codifique a URL interna.
- Inspeção de header ou payload JWT: decodifique Base64URL.
- Valores legíveis de formulário: use as regras de form encoding que o receptor espera.
Pista de depuração
Se você vê %2F, %3D ou %26, está olhando codificação de URL. Se vê texto longo com letras, números, +, /, _ ou -, pode ser Base64 ou Base64URL.
Nomear a codificação corretamente é o caminho mais rápido para corrigir o bug.