Un solo token en cookie para que el sitio de comercio electrónico almacene todos los datos relacionados con el usuario en la base de datos, ¿es seguro?

0

Estoy creando un sitio web de comercio electrónico utilizando PHP, mysql, javascript.

Mi idea es guardar un token, digamos una guía de 50 caracteres, en una sola cookie, y usar esto para identificar al usuario para cada solicitud.

Luego guardaría otros elementos como cart_id, order_id, customer_id, log_in (bool) y expires_at en una tabla de sesiones de la base de datos.

Probablemente, luego actualizaré el token en cada solicitud correspondiente y renovaré su tiempo de caducidad.

Me gustaría saber si esto se consideraría una forma segura de mantener una sesión y si, en general, es una buena idea.

Además, cualquier otra cosa que pueda hacer para que una sesión iniciada sea más segura sería una ventaja. Gracias.

Editar:

Esta es la función que estoy usando para generar mi guid:

<?php
function guid($length) {
    $bytes = ceil($length/2);
    $guid = bin2hex(openssl_random_pseudo_bytes($bytes));
    return $guid;
}

Lo llamo de la siguiente manera:

<?php
$token = guid(50);
    
pregunta Marc 03.08.2017 - 16:30
fuente

3 respuestas

1

No use un GUID como identificador de sesión, los GUID pueden ser criptográficamente seguros, pero no siempre lo son. Ya que está usando PHP, debe usar la implementación de la cookie de sesión predeterminada de PHP ya que usa un CSPRNG (a partir de 7.1, para versiones anteriores, vea aquí ).

El secuestro de la sesión se puede evitar mediante:

  1. Usar un CSPRNG para evitar identificadores de sesión predecibles
  2. Establezca la marca de seguridad en la cookie para evitar enviarla a través de una conexión no cifrada
  3. Establezca la marca HttpOnly en la cookie para evitar que javascript la lea

Las versiones recientes de PHP hacen # 1 por usted, y session_set_cookie_params te permite hacer # 2 y # 3.

Relacionado: ¿Son seguros los GUID por una sola vez? tokens?

    
respondido por el AndrolGenhald 03.08.2017 - 16:48
fuente
1

Sí, los GUID son buenos para una parte de la administración de la sesión. Básicamente, todo lo que te ofrece es una cadena única, sin colisiones, que garantiza ser única, eso es todo. Sin embargo, toda la gestión de la sesión es más que eso. Algunos requisitos para la gestión de sesiones, si desea rodar su propio: Debido a que el GUID se ve confuso, no significa que esté cifrado.

  1. Identificador de sesión único (su GUID cumple con este requisito).
  2. Expiración y recuperación de la sesión.
  3. prevención de envenenamiento de galletas.
  4. Enlace autenticado y sin autenticación. Verifique algunos de los marcos de trabajo de PHP cómo lo hacen, puede comenzar con WordPress, que es probablemente el más simple. Puede tomar prestado su enfoque y partes de código en su implementación (en su mayoría son de código abierto).
respondido por el Hugo R 04.08.2017 - 04:52
fuente
0

Los tokens persistentes son vulnerables al infame ataque "mi hijo lo hizo". Está bien mantener el carrito de esa manera, pero debe forzar la reautenticación (con una cookie de sesión temporal que cae cuando se cierra el navegador) para el punto de venta real.

    
respondido por el John Wu 04.08.2017 - 04:39
fuente

Lea otras preguntas en las etiquetas