Watch at EaseHistorias. Respuestas. Perspectiva.

Tecnología · GUÍA PRÁCTICA

¿validate=True acepta dos Base64 en Python? Exige bits de relleno canónicos

La validación estricta del alfabeto no equivale a la codificación canónica de RFC 4648. Usa canonical=True en Python 3.15+ o decodifica, recodifica y compara en versiones anteriores.

Diagrama original que separa sintaxis Base64, bytes decodificados y validación canónica.
Ilustración original: valida alfabeto, decodifica bytes y exige una sola forma. Watch at Ease

validate=True comprueba el alfabeto y la estructura del relleno, pero en Python 3.14 y anteriores todavía puede aceptar alias Base64 cuyos bits de relleno no usados no son cero. Varias cadenas se decodifican a los mismos bytes.

En Python 3.15 usa canonical=True. En versiones anteriores, decodifica de forma estricta, vuelve a codificar con la misma política y compara exactamente. Una forma canónica no autentica los datos.

1. El resultado es real

En CPython 3.12.14 las tres entradas producen c1. validate=True no comprueba los bits de relleno en esas versiones.

El codificador genera una forma canónica; el comportamiento muchos-a-uno nace cuando el decodificador ignora bits sin uso.

2. Por qué existen alias

Con un byte de entrada, solo dos bits del segundo símbolo llevan datos y los otros cuatro son relleno. RFC 4648 exige que el codificador los ponga a cero.

Validez sintáctica, bytes decodificados y texto canónico son decisiones distintas.

3. Python 3.15

Usa base64.b64decode(value, validate=True, canonical=True); el alias lanza binascii.Error.

Declara también la política de relleno, espacios y alfabeto URL-safe.

4. Versiones anteriores

Decodifica con validate=True, recodifica con base64.b64encode y exige igualdad exacta con la entrada ASCII.

No arregles cualquier entrada añadiendo signos igual; un protocolo sin relleno o URL-safe necesita su propia forma canónica.

5. Cuándo importa

Los alias dividen la identidad si el texto Base64 se usa como clave, caché, deduplicación, allow-list, entrada de firma o identificador de auditoría.

Compara bytes decodificados cuando sea posible; si necesitas texto, impón la forma canónica en el límite.

6. No es autenticación

Bytes maliciosos también pueden tener una codificación canónica. Verifica una firma digital o MAC.

Prueba el valor canónico, un alias, caracteres inválidos, relleno incorrecto y cada variante admitida.

Matriz original de garantías para validate, canonical, recodificación y autenticación.
Ilustración original: canonicalizar da una forma; firma o MAC aporta confianza. Watch at Ease