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.

Ferramentas relacionadas

Use as ferramentas deste artigo

Codificador / Decodificador Base64base64 / encode / decodeCodificador / Decodificador URLurl / uri / encode

Aprenda o formato

Curso de Base64Aprenda Base64 desde os princípios: binário para texto, padding, URLs e armadilhas comuns.Curso de codificação de URLEntenda codificação percentual, query strings e a diferença entre encodeURI e encodeURIComponent.

Voltar aos artigos