[GUÍA] Referencia Completa Base64
Todo lo que necesitas saber sobre la codificación Base64: teoría, implementación y mejores prácticas.
// ¿QUÉ ES BASE64?
Base64 es un esquema de codificación binario-a-texto que representa datos binarios usando 64 caracteres ASCII. Está diseñado para codificar datos binarios que necesitan ser almacenados y transferidos a través de medios diseñados para datos textuales.
El conjunto de caracteres Base64 incluye A-Z, a-z, 0-9, y dos caracteres adicionales (típicamente + y /), más = para relleno.
// CÓMO FUNCIONA BASE64
La codificación Base64 funciona tomando datos binarios y convirtiéndolos en una cadena de caracteres ASCII. El proceso involucra:
1. Dividir la entrada en fragmentos de 6 bits (Base64 usa 6 bits por carácter) 2. Mapear cada valor de 6 bits a un carácter en el alfabeto Base64 3. Agregar relleno con caracteres '=' si es necesario
// Ejemplo: Codificar 'Man' a Base64
// 'M' = 01001101, 'a' = 01100001, 'n' = 01101110
// Combinado: 010011010110000101101110
// Dividido en grupos de 6 bits: 010011 010110 000101 101110
// Valores decimales: 19, 22, 5, 46
// Caracteres Base64: T, W, F, u
// Resultado: 'TWFu'
// CASOS DE USO COMUNES
- > Incrustar imágenes en HTML/CSS (URIs de datos)
- > Codificar datos binarios para APIs JSON
- > Archivos adjuntos de email (codificación MIME)
- > Almacenar datos binarios en bases de datos
- > Tokens de autenticación y claves API
- > Transmisión de datos segura para URLs
// IMPLEMENTACIÓN EN JAVASCRIPT
Los navegadores modernos proporcionan funciones integradas de codificación y decodificación Base64:
Para codificar texto a Base64, usa btoa() (binary to ASCII). Para decodificar Base64 a texto, usa atob() (ASCII to binary).
// Codificar texto a Base64
const text = '¡Hola, Mundo!';
const encoded = btoa(text);
console.log(encoded); // wqFIb2xhLCBNdW5kbyE=
// Decodificar Base64 a texto
const decoded = atob(encoded);
console.log(decoded); // ¡Hola, Mundo!
// Para cadenas Unicode, usa TextEncoder/TextDecoder
const encoder = new TextEncoder();
const decoder = new TextDecoder();
const unicodeText = '¡Hola, 世界!';
const bytes = encoder.encode(unicodeText);
const base64 = btoa(String.fromCharCode(...bytes));
console.log(base64);
// CONSIDERACIONES DE SEGURIDAD
Base64 NO ES cifrado o seguridad. Es simplemente codificación para representación de datos. Notas importantes de seguridad:
Nunca uses Base64 solo para protección de datos sensibles. Siempre valida la entrada Base64 para prevenir ataques de inyección. Ten en cuenta que Base64 aumenta el tamaño de los datos en aproximadamente 33%.
- > Base64 es fácilmente reversible - no proporciona seguridad
- > Siempre valida y sanitiza la entrada Base64
- > Usa cifrado apropiado para datos sensibles
- > Considera variantes Base64 seguras para URLs en aplicaciones web
- > Ten cuidado con los ataques de padding oracle en algunos contextos
// MEJORES PRÁCTICAS
- > Usa Base64 seguro para URLs en aplicaciones web (reemplaza + con -, / con _)
- > Siempre maneja el relleno correctamente
- > Valida la longitud y caracteres de entrada
- > Considera compresión antes de codificar para datos grandes
- > Usa streaming para conjuntos de datos muy grandes
- > Implementa manejo apropiado de errores para entrada inválida