> base64url | jwt | url-segura <
// Base64url - variante de Base64 segura para URLs e nomes de ficheiro, sem padding
Compatível com URL
Sem caracteres especiais de URL – seguro para parâmetros de consulta e caminhos.
Padrão JWT
Utilizado em JSON Web Tokens e nas especificações OAuth 2.0.
Padding opcional
Os caracteres de padding (=) podem ser omitidos para URLs mais limpas.
>> informação técnica
Como funciona o Base64url:
Base64url é uma variante de Base64 que substitui "+" por "-" e "/" por "_", tornando a saída segura para URLs e nomes de ficheiro. O carácter de padding "=" é frequentemente omitido, pois pode causar problemas em URLs.
Comparação:
Base64: SGVsbG8+Pw== Base64url: SGVsbG8-Pw
Por que usar Base64url:
- >Tokens JWT
- >Fluxos OAuth 2.0
- >Parâmetros de consulta em URL
- >Codificação de nomes de ficheiro
- >Assinaturas de APIs web
>> perguntas frequentes
O que é Base64url?
Base64url é uma variante da codificação Base64 segura para URLs e nomes de ficheiro. Substitui "+" por "-", "/" por "_" e pode remover os caracteres de padding "=", evitando problemas de codificação em URLs.
Por que não usar Base64 normal em URLs?
A Base64 normal utiliza os caracteres "+", "/" e "=", que têm significados especiais em URLs. "+" pode ser interpretado como espaço, "/" é um separador de caminho e "=" é usado para parâmetros, o que pode causar problemas de análise.
Onde o Base64url é utilizado?
Base64url é amplamente utilizado em JWT (JSON Web Tokens), códigos de autorização OAuth 2.0, assertions SAML e em qualquer API que precise enviar dados binários em URLs ou cabeçalhos HTTP.
O padding é obrigatório no Base64url?
Não. O padding no Base64url é opcional. Muitas implementações o omitem porque o comprimento pode ser calculado. As especificações de JWT exigem explicitamente a ausência de padding para URLs mais limpas.
// Diferenças em relação ao Base64
| Base64 | Base64url |
|---|---|
| + | - |
| / | _ |
| = | — |
// Base64url no código
JavaScript btoa(s).replace(/\+/g,'-').replace(/\//g,'_').replace(/=+$/,'')
Node.js Buffer.from(s).toString('base64url')
Python base64.urlsafe_b64encode(b).rstrip(b'=')
Go base64.RawURLEncoding.EncodeToString(b)
Padding s + '=' * (-len(s) % 4)
>> Mais perguntas
P: Por que o Base64url omite o «=»?
R: O preenchimento pode ser deduzido do comprimento e «=» tem significado especial em URLs e query strings. Por isso o JWT (RFC 7515) e muitas APIs escrevem Base64url sem preenchimento.
P: Como restauro o preenchimento antes de decodificar?
R: Veja o comprimento módulo 4: resto 2 → acrescente ==, resto 3 → acrescente =, resto 0 → nada. Resto 1 nunca é válido. Troque também - por + e _ por /.
P: Base64url é criptografia?
R: Não, é apenas uma codificação: qualquer pessoa pode revertê-la. O conteúdo do payload de um JWT é legível, então não coloque segredos nele.