¿Mantengo mi sesión de autenticación simple de PHP lo suficientemente segura?

1

Estoy experimentando con aplicaciones de seguridad, criptografía y web. Mi objetivo es crear un sistema de inicio de sesión simple que sea realmente lo suficientemente seguro . Me gustaría compartir mi enfoque para mantener una sesión autenticada con usted para obtener algunos comentarios.

Mi enfoque:

Cuando el usuario inicia sesión (uso BCrypt y password_verify):

session_regenerate_id(TRUE);
$_SESSION['session_token'] = mcrypt_create_iv(16, MCRYPT_DEV_URANDOM);
$app->setCookie('auth', hash_hmac("sha256", $_SESSION['session_token'].$_SERVER['REMOTE_ADDR'].$_SERVER['HTTP_USER_AGENT'], SESSION_SECRET));
$app->redirect($app->urlFor('index'));

Todas las cookies están cifradas con MCRYPT_RIJNDAEL_192 en modo CBC (Slim Framework se encarga de ello).

Luego, en cada solicitud, realizo esas comprobaciones:

    $token = $app->getCookie('auth');
    if(!$token
        || !isset($_SESSION['session_token'])
        || hash_hmac("sha256", $_SESSION['session_token'].$_SERVER['REMOTE_ADDR'].$_SERVER['HTTP_USER_AGENT'], SESSION_SECRET) !== $token
    ) {
         // user not logged in
    }

SESSION_SECRET es mi cadena de const aleatoria definida.

Y aquí está mi función de cierre de sesión:

$app->deleteCookie('auth');
session_destroy();
session_unset();
session_start();
session_regenerate_id(TRUE);

¿Es lo suficientemente seguro para mantener al usuario conectado?

    
pregunta Dave 27.03.2014 - 01:41
fuente

0 respuestas

Lea otras preguntas en las etiquetas