Todos los artículos

Basic Authentication: cómo funciona la forma más simple de proteger un recurso HTTP

HTTP Basic Authentication es una de las formas más antiguas y sencillas de proteger un recurso con contraseña: el navegador pide usuario y contraseña, y ambos se envían al servidor en cada petición. Esa misma simplicidad es su mayor debilidad.

Cómo se construye la cabecera Authorization

El usuario y la contraseña se unen con dos puntos (usuario:contraseña), y toda la cadena resultante se codifica en Base64 y se coloca en la cabecera Authorization: Basic <cadena_codificada>. El navegador reenvía esta cabecera automáticamente en cada petición posterior tras el primer inicio de sesión exitoso.

Por qué Base64 no es seguridad

Base64 es un esquema de codificación, no cifrado: cualquiera puede decodificar la cadena de vuelta a usuario:contraseña en segundos, sin necesitar ninguna clave. Si la petición se intercepta —por ejemplo, en una red Wi-Fi pública sin protección—, las credenciales quedan expuestas al instante.

Acentos, eñes y el tamaño del token Base64

Base64 codifica bytes, no caracteres, así que la codificación de la cadena original importa. Una letra sin tilde ocupa 1 byte en UTF-8, pero caracteres como ñ, á, é, í, ó, ú, tan comunes en apellidos y palabras del español (piénsese en Muñoz o Peña), ocupan 2 bytes cada uno. Una contraseña como Contraseña_Ñoño123 genera por tanto un token Base64 notablemente más largo que una contraseña puramente ASCII con la misma cantidad de caracteres. Antes de la RFC 7617 (2015), la especificación original de Basic Auth ni siquiera definía una codificación de caracteres para el usuario y la contraseña, lo que causaba problemas reales de interoperabilidad en cuanto entraban en juego caracteres acentuados.

Para qué sirve

  • Proteger rápidamente con contraseña un servidor de staging o una herramienta interna durante el desarrollo.
  • Construir una cabecera Authorization correcta para probar manualmente una API con curl o Postman.
  • Entender por qué usar Basic Auth sobre HTTP plano se considera una vulnerabilidad de seguridad seria.

Basic Auth no tiene un mecanismo de cierre de sesión nativo

El navegador guarda las credenciales en caché y añade automáticamente la cabecera Authorization a cada petición posterior al mismo origen, hasta que se cierre la pestaña —el protocolo simplemente no contempla un botón estándar de "cerrar sesión". Para forzar el cierre de sesión de un usuario, los servidores recurren a trucos: devolver deliberadamente un 401 con un valor de realm distinto, o confiar en que el propio usuario cierre todas las pestañas del navegador.

Probar la herramienta