2010-09-05 18 views
11

Tengo un sistema de inicio de sesión. ¿Cómo puedo implementar un sistema seguro recordarme usando cookies.¿Cómo puedo crear un sistema seguro de "recordarme" usando PHP?

¿Qué valor debo tener para almacenar el nombre de usuario y la contraseña de la cookie, pero cómo puedo protegerlo?

+0

he intentado almacenar nombre de usuario y contraseña en la galleta – Saqueib

+1

OK. Eso es un comienzo. Pero si intercepto esa cookie, entonces queda expuesto. Mira lo siguiente: http://stackoverflow.com/search?q=php+session+hijacking –

+0

Mala idea. No solo cualquier persona en esa máquina puede leer el combo user + pass, sino que cualquier XSS que envíe 'document.cookie' podrá ver su nombre de usuario/contraseña al pie de la letra. – alex

Respuesta

1

definir un usuario sal foreach en dB a continuación

sobre la configuración

$expire_time = time() + 2 * 7 * 24 * 3600; // 2 weeks exp time 

setcookie( 
    "rememberMe", 
    crypt($username, $salt), 
    $expire_time, 
    '/' 
); 

en la validación de

$_COOKIE['rememberMe'] === crypt($username, $salt) 
-1

No hay mucho que hacer ... no deje que sus archivos de sesión se limpien (ini setting session.gc_probability = 0), y cambie la cookie de sesión de temporal a permanente (ini setting session.cookie_lifetime = however_long_you_want_the_user_to_be_remembered).

Por supuesto, es probable que desee eliminar eventualmente los archivos de sesión obsoletos, por lo que puede experimentar con muy baja probabilidad de que ocurra la limpieza o realizar una limpieza externa. De cualquier manera, mientras el usuario mantenga la cookie de sesión y guarde el archivo de sesión, serán "recordados".

+2

. Creo que una cookie establecida con 'setcookie()' sería una mejor idea en lugar de dejar que las sesiones nunca caduquen. – alex

+1

Bueno, de cualquier manera, si el usuario es recordado, la sesión se volverá a crear, por lo que también podría mantenerlo. Siempre puede eliminar datos críticos si hay un gran lapso de tiempo entre las visitas cuando llega la próxima visita. –

0

Tal vez podría crear una cadena de letras/números de 16 caracteres asociada en una base de datos con ese usuario y la dirección MAC para que (mientras la gente no intente demasiado y falsifique macs) solo esa máquina pueda iniciar sesión en.

0

Quizás deba almacenar (en su base de datos) IP de visitante, agente de usuario, zona horaria o complementos instalados. Algo que podría ser fácil de usar usando Javascript, ya que obtener una dirección MAC podría ser un problema.

Luego puede verificar fácilmente si el usuario tiene la misma IP, UA, zona horaria o complementos que la última vez :) O puede usar MaxMind para verificar su ubicación y confirmar si está usando la zona horaria correcta. Si hay algo sospechoso, debes descartar las credenciales de las cookies.

Cuestiones relacionadas