2009-09-11 23 views
11

¿Cuál es el mejor que se puede almacenar en una cookie persistente para mantener una sesión iniciada en el estado?¿Qué se debe almacenar en una cookie para un sistema de inicio de sesión?

He visto muchos sitios web (y tutoriales para principiantes!) Que simplemente almacenar algo así como VALIDUSER = 1 en una cookie. Claramente, podría hacer una parodia de eso y el sitio web pensaría que soy un usuario válido.

Si el nombre de usuario se almacena en la cookie que podía hacerse pasar por cualquier usuario mediante el envío de una cookie con su/su nombre de usuario en mi solicitud.

Así que si almacena el nombre de usuario y contraseña en la cookie, entonces hay que saber el nombre de usuario y contraseña para entrar en eficazmente el usuario se registra en forma automática -. Es como tener la contraseña guardada por su navegador. En lugar de tener que escribir las credenciales en los cuadros personalmente, el navegador las envía automáticamente con cada solicitud de página.

Pero esto todavía es una mala idea? Almacenar una contraseña de texto sin formato no es una idea brillante, pero así es como se enviaría en los datos POST al iniciar sesión. Además, podría almacenarse en hash. Pero todavía no me siento cómodo con eso.

Tal vez las galletas no se deben utilizar para almacenar cualquier cosa excepto un ID de sesión y los datos de usuario se almacena en el propio servidor. Esa es quizás una ubicación más segura para él, suponiendo que el servidor no se comparte.

En cuanto a algún tipo de software de código abierto como software del foro, que utilizan un sistema más complicado, pero no podía entender exactamente lo que estaba haciendo de ojear el código.

Cuál es la norma "mejores prácticas"?

+1

lo tanto, es tan simple como almacenar un identificador de usuario en la sesión, entonces? ¿Eso es seguro y no es necesario almacenar más información sobre un inicio de sesión particular en la base de datos? (por ejemplo, IP), y para cambiar toda la sesión/datos cada vez que vuelven a visitar, como he visto hacer estos grandes scripts? – Rob

+0

Debe volver a utilizar un marco de autenticación existente siempre que sea posible, porque, en realidad, es complejo. Por ejemplo, echar un vistazo a https://github.com/delight-im/PHP-Auth – caw

Respuesta

6
+0

El segundo enlace está roto. –

+0

@DrTwox Ya está listo. –

+6

Las respuestas que contienen enlaces solo no son buenas respuestas. Esta respuesta debe ser editada para incluir un resumen de los artículos vinculados. (Sí, sé que ya es una respuesta muy antigua.Sin embargo, el comentario sobre un enlace roto ilustra perfectamente la necesidad de resumir los enlaces). –

3

La mejor práctica sería utilizar un SESSION en lugar de una galleta de datos de uso. Las COOKIES se utilizan para almacenar información genérica, no información específica sobre un usuario, para eso se utilizan SESSIONS.

0

La mejor práctica es almacenar un identificador de sesión generada aleatoriamente. La sesión almacena la identificación del usuario o cualquier otra cosa que necesite almacenar. En PHP el método session_start() genera automáticamente el ID de sesión y una cookie llamada PHPSESSID, por lo que sólo tendrá que preocuparse por el almacenamiento de datos en el array $ _SESSION, no en la cookie.

0

Lo único que debe estar en una cookie es la sessionid generada por PHP (y esto se hace de forma automática cuando se utiliza sesiones). No debe almacenar nada en la cookie, excepto tal vez un nombre de usuario que se recuerda para el propósito de una casilla de verificación "Recordarme".

Cuestiones relacionadas