token

 ¿Qué es un token?

Un token es una cadena de caracteres que representa información específica, como credenciales de acceso, identificadores únicos o datos de sesión. Se utilizan comúnmente en:

  • Autenticación y autorización (JWT, tokens de acceso)

  • Protección CSRF (Cross-Site Request Forgery)

  • Identificación única de recursos

  • Contraseñas de un solo uso

Ejemplo pequeño en PHP: Token de autenticación simple

php
<?php
// Función para generar un token aleatorio
function generarToken($longitud = 32) {
    return bin2hex(random_bytes($longitud));
}

// Generar un token
$token = generarToken();
echo "Token generado: " . $token . "\n\n";

// Simular verificación del token (en una aplicación real se guardaría en base de datos)
function verificarToken($tokenAlmacenado, $tokenRecibido) {
    return hash_equals($tokenAlmacenado, $tokenRecibido);
}

// Ejemplo de uso
$tokenAlmacenado = $token; // En la práctica, esto vendría de una base de datos
$tokenUsuario = $token; // Token que envía el usuario

if (verificarToken($tokenAlmacenado, $tokenUsuario)) {
    echo "✅ Token válido - Acceso permitido";
} else {
    echo "❌ Token inválido - Acceso denegado";
}
?>

Salida esperada:

text
Token generado: 1a2b3c4d5e6f7g8h9i0j1k2l3m4n5o6p7q8r9s0t1u2v3w4x5y6z7a8b

✅ Token válido - Acceso permitido

Ejemplo con token JWT (más realista)

php
<?php
// Ejemplo simplificado de un token JWT
function crearJWT($datosUsuario) {
    $header = base64_encode(json_encode(['alg' => 'HS256', 'typ' => 'JWT']));
    $payload = base64_encode(json_encode([
        'user_id' => $datosUsuario['id'],
        'username' => $datosUsuario['username'],
        'exp' => time() + 3600 // Expira en 1 hora
    ]));
    $firma = base64_encode(hash_hmac('sha256', "$header.$payload", 'clave_secreta', true));
    
    return "$header.$payload.$firma";
}

// Datos de ejemplo
$usuario = ['id' => 123, 'username' => 'juan123'];
$jwtToken = crearJWT($usuario);

echo "Token JWT: " . $jwtToken;
?>

Los tokens son esenciales para la seguridad web moderna, permitiendo autenticación stateless y protección contra ataques.

Comentarios

Entradas más populares de este blog

¿Qué es un token y cómo se utiliza en una API?

Generación de Credenciales API