Al verificar una variable de sesión para ver si un usuario ha iniciado sesión, ¿es suficiente para ver si la variable está configurada?

3

Cuando muestre una página con contenido que solo haya iniciado sesión, los usuarios deberían verlo, simplemente lo verifico

if(isset($_SESSION['hasLoggedIn']))
{
  //show content
}
else
{
  echo 'you must log in';
}

En este artículo se recomienda verificar la dirección IP y navegador cada vez.

$_SESSION['login_string'] = hash('sha512', $password.$ip_address.$user_browser);

¿Es esto necesario? Pensé que como las variables de sesión solo existían en el servidor, ¿no son propensas a ser atacadas? No entiendo por qué $password está ahí. Si se pasa la contraseña a cada página, ¿no sería más fácil consultar la base de datos con el ID de usuario o la contraseña, o es la idea de que de esta manera no es necesario consultar la base de datos (lo que requiere mucho tiempo)? ?

    
pregunta Celeritas 22.03.2013 - 01:14
fuente

1 respuesta

2

Hay otras cosas que se deben considerar para obtener un manejo seguro de la sesión, como usar SSL, volver a generar la identificación de la sesión y más. Pero para obtener el estado de inicio de sesión de la sesión, es suficiente probar si se ha establecido un cierto valor, como hiciste.

Por supuesto, puede almacenar información adicional sobre la conexión del usuario en la sesión, pero la contraseña y la dirección IP no son apropiadas. Especialmente la contraseña no debe almacenarse en texto plano en el lado del servidor, y eso es lo que necesita para verificar el hash en su ejemplo. La dirección IP no es una información confiable, podría ser dinámica y cambiar durante la visita del usuario. En este caso, se le denegaría el acceso al usuario, incluso si hubiera iniciado sesión correctamente anteriormente.

Si desea almacenar información adicional, recomendaría escribir esta huella digital en una variable separada como $ _SESSION ['client_fingerprint']. Hay un artículo de Chris Shiflett (consulte la sección: Cómo evitar la suplantación ), muestra que no hay muchas informaciones adecuadas para generar esta huella digital.

    
respondido por el martinstoeckli 22.03.2013 - 10:54
fuente

Lea otras preguntas en las etiquetas