es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

¿Es posible crear una cookie de sesión / cookie httponly mediante una llamada a la API?

¿Es posible crear una cookie de sesión / cookie httponly a través de una llamada API?

Estoy construyendo un sistema de autenticación utilizando React y PHP.

Desde el frontend estoy llamando a la API de inicio de sesión para validar el ID de usuario y la contraseña, y si está autenticado, genero un token, lo guardo en una base de datos y lo devuelvo al cliente:

{"usuario":"usr1","estado":"AUTENTICADO","token":"56etXss32124hWZ31AAf"}

Y estoy almacenando eso en una cookie para que mi frontend sepa que el usuario ha iniciado sesión.

Ahora no quiero almacenar el token en una cookie normal. El usuario y estado se pueden almacenar en una cookie normal y tengo que almacenar al menos el estado, para mantener mi sesión de inicio de sesión activa incluso después de actualizar la página.

Quiero almacenar el token en una cookie de sesión o en una cookie httponly para que la transacción sea más segura. Y también quiero configurar este token como una cookie httponly para que cuando haga otra llamada API para modificar cualquier dato especificado por el usuario, este token se pase a mi servidor y pueda validar al usuario.

¿Alguien puede sugerirme cómo lograr esto?

Tags:  , , , ,

Answer

  1. Avatar for davy.ai

    Sí, es posible crear una cookie de sesión o una cookie con httponly a través de una llamada a la API. De hecho, se recomienda usar cookies con httponly para almacenar información delicada como tokens de usuario, ya que esto evita que los scripts del lado del cliente accedan a estos valores.

    Para lograr esto, necesitas establecer las banderas adecuadas en las cabeceras de la cookie al configurarla a través de PHP. Por ejemplo, para crear una cookie con httponly y el nombre ‘token’, puedes utilizar el siguiente código en tu API de inicio de sesión:

    // Generar token
    $token = generarToken();
    
    // Crear cookie con token
    setcookie('token', $token, 0, '/', '', true, true); //La bandera HttpOnly está establecida en true
    

    Ten en cuenta que la bandera ‘HttpOnly’ se establece en true en la función setcookie, lo cual asegurará que la cookie solo sea accesible a través de solicitudes HTTP(S) y no a través de scripts del lado del cliente.

    También puedes establecer banderas adicionales como ‘Secure’ para asegurarte de que la cookie solo se envíe a través de conexiones HTTPS seguras. Por ejemplo:

    // Crear cookie con token y banderas adicionales
    setcookie('token', $token, 0, '/', '', true, true); // Las banderas HttpOnly y Secure están establecidas en true
    

    En resumen, al establecer las banderas adecuadas en tu código PHP, puedes crear cookies de sesión o cookies con httponly a través de una llamada a la API y asegurar el almacenamiento seguro de datos sensibles como los tokens de usuario.

Comments are closed.