[GUIA] Referência Completa Base64
Tudo que você precisa saber sobre codificação Base64: teoria, implementação e melhores práticas.
// O QUE É BASE64?
Base64 é um esquema de codificação binário-para-texto que representa dados binários usando 64 caracteres ASCII. É projetado para codificar dados binários que precisam ser armazenados e transferidos através de mídias projetadas para dados textuais.
O conjunto de caracteres Base64 inclui A-Z, a-z, 0-9, e dois caracteres adicionais (tipicamente + e /), mais = para preenchimento.
// COMO BASE64 FUNCIONA
A codificação Base64 funciona pegando dados binários e convertendo-os em uma string de caracteres ASCII. O processo envolve:
1. Dividir a entrada em pedaços de 6 bits (Base64 usa 6 bits por caractere) 2. Mapear cada valor de 6 bits para um caractere no alfabeto Base64 3. Adicionar preenchimento com caracteres '=' se necessário
// Exemplo: Codificando 'Man' para Base64
// 'M' = 01001101, 'a' = 01100001, 'n' = 01101110
// Combinado: 010011010110000101101110
// Dividido em grupos de 6 bits: 010011 010110 000101 101110
// Valores decimais: 19, 22, 5, 46
// Caracteres Base64: T, W, F, u
// Resultado: 'TWFu'
// CASOS DE USO COMUNS
- > Incorporar imagens em HTML/CSS (URIs de dados)
- > Codificar dados binários para APIs JSON
- > Anexos de email (codificação MIME)
- > Armazenar dados binários em bancos de dados
- > Tokens de autenticação e chaves API
- > Transmissão de dados segura para URLs
// IMPLEMENTAÇÃO EM JAVASCRIPT
Navegadores modernos fornecem funções integradas de codificação e decodificação Base64:
Para codificar texto para Base64, use btoa() (binary to ASCII). Para decodificar Base64 para texto, use atob() (ASCII to binary).
// Codificar texto para Base64
const text = 'Olá, Mundo!';
const encoded = btoa(text);
console.log(encoded); // T2zDoSwgTXVuZG8h
// Decodificar Base64 para texto
const decoded = atob(encoded);
console.log(decoded); // Olá, Mundo!
// Para strings Unicode, use TextEncoder/TextDecoder
const encoder = new TextEncoder();
const decoder = new TextDecoder();
const unicodeText = 'Olá, 世界!';
const bytes = encoder.encode(unicodeText);
const base64 = btoa(String.fromCharCode(...bytes));
console.log(base64);
// CONSIDERAÇÕES DE SEGURANÇA
Base64 NÃO é criptografia ou segurança. É simplesmente codificação para representação de dados. Notas importantes de segurança:
Nunca use Base64 sozinho para proteção de dados sensíveis. Sempre valide entrada Base64 para prevenir ataques de injeção. Esteja ciente de que Base64 aumenta o tamanho dos dados em ~33%.
- > Base64 é facilmente reversível - não fornece segurança
- > Sempre valide e sanitize entrada Base64
- > Use criptografia adequada para dados sensíveis
- > Considere variantes Base64 seguras para URL em aplicações web
- > Cuidado com ataques de oracle de preenchimento em alguns contextos
// MELHORES PRÁTICAS
- > Use Base64 seguro para URL em aplicações web (substitua + por -, / por _)
- > Sempre manipule preenchimento corretamente
- > Valide comprimento e caracteres de entrada
- > Considere compressão antes da codificação para dados grandes
- > Use streaming para conjuntos de dados muito grandes
- > Implemente tratamento de erro adequado para entrada inválida