Foro de elhacker.net

Programación => Desarrollo Web => Mensaje iniciado por: Leguim en 2 Enero 2020, 19:18 pm



Título: [Pregunta]: ¿Como saben ustedes si una persona inicio sesión?
Publicado por: Leguim en 2 Enero 2020, 19:18 pm
Buenos días,

yo lo hago usando
Código
  1. if(isset($_SESSION['id_user']))
  2. {
  3.     echo "Sesión iniciada.";
  4. }
  5. else
  6. {
  7.     echo "Sesión no iniciada.";
  8. }
  9.  

Generalmente creo que se hace así, pero nose me parecia algo simple hacerlo así... ¿ustedes como lo hacen?


Título: Re: [Pregunta]: ¿Como saben ustedes si una persona inicio sesión?
Publicado por: engel lex en 2 Enero 2020, 19:23 pm
basicamente eso... no hay mucha mas complejidad ya que son variables de servidor


Título: Re: [Pregunta]: ¿Como saben ustedes si una persona inicio sesión?
Publicado por: Leguim en 2 Enero 2020, 19:58 pm
Ah okay gracias!


Título: Re: [Pregunta]: ¿Como saben ustedes si una persona inicio sesión?
Publicado por: MinusFour en 2 Enero 2020, 20:30 pm
La superglobal $_SESSION se llena solo cuando se inicia una session. Si tu tienes sesiones anónimas de manera que marcar un campo en la superglobal de $_SESSION lo consideras que la sesión ha sido autentificada entonces lo que haces funciona.

Pero si creas la sesión solo cuando el usuario se autentifica, lo correcto es usar session_status. Esto te permite revisar si hay una sesión existente antes de usar session_start (que es la que popula $_SESSION).


Título: Re: [Pregunta]: ¿Como saben ustedes si una persona inicio sesión?
Publicado por: @XSStringManolo en 2 Enero 2020, 23:42 pm
Buenos días,

yo lo hago usando
Código
  1. if(isset($_SESSION['id_user']))
  2. {
  3.     echo "Sesión iniciada.";
  4. }
  5. else
  6. {
  7.     echo "Sesión no iniciada.";
  8. }
  9.  

Generalmente creo que se hace así, pero nose me parecia algo simple hacerlo así... ¿ustedes como lo hacen?
No hay que complicar las cosas sencillas, hay que simplificar las complejas.

Si has copiado de ejemplos por ahí que no entiendes al 100% pero que funcionan bien, son eses por los que se debe preguntar. Se aprende mucho mirando código de otros.


Título: Re: [Pregunta]: ¿Como saben ustedes si una persona inicio sesión?
Publicado por: Leguim en 4 Enero 2020, 22:44 pm
La superglobal $_SESSION se llena solo cuando se inicia una session. Si tu tienes sesiones anónimas de manera que marcar un campo en la superglobal de $_SESSION lo consideras que la sesión ha sido autentificada entonces lo que haces funciona.

Pero si creas la sesión solo cuando el usuario se autentifica, lo correcto es usar session_status. Esto te permite revisar si hay una sesión existente antes de usar session_start (que es la que popula $_SESSION).

Lo hago así
Código
  1. // Si el email y la contraseña son correctas
  2. if(!isset($_SESSION['id_user']))
  3. {
  4. $_SESSION['id_user'] = $x;
  5. }
  6.  
  7. [Mando a otra pagina a el usuario]
  8. // Si el usuario sale "logout"
  9. if(isset($_SESSION['id_user']))
  10. {
  11.        unset($_SESSION['id_user']);
  12.        session_destroy();
  13. }
  14.  

Esta forma es valida? segura?


Título: Re: [Pregunta]: ¿Como saben ustedes si una persona inicio sesión?
Publicado por: @XSStringManolo en 5 Enero 2020, 00:56 am
Lo hago así
Código
  1. // Si el email y la contraseña son correctas
  2. if(!isset($_SESSION['id_user']))
  3. {
  4. $_SESSION['id_user'] = $x;
  5. }
  6.  
  7. [Mando a otra pagina a el usuario]
  8. // Si el usuario sale "logout"
  9. if(isset($_SESSION['id_user']))
  10. {
  11.        unset($_SESSION['id_user']);
  12.        session_destroy();
  13. }
  14.  

Esta forma es valida? segura?
Tienes parseado el nombre de usuario y el email del lado del servidor para evitar overflows, Path Trasversal, Inyecciones SQL, Inyecciones HTML, Inyecciones PHP, Inyecciones de comandos, Stored y Reflected XSS, NullBytes, Response Spliting,  CSRF y SSRF entre otros? Haces algo del lado del cliente para proteger ante DOM XSS, phishing, clickjacking, sameOrigen? Mandas las cabeceras adecuadas? Sirves data sensible por HTTP? Mandas la página de login por HTTPS o das alguna forma al cliente de validar que está en tu sitio? No hay ningún tipo de leaks? Compruebas que solo se usen caracteres alfanumerícos en el servidor para evitar ofuscación de código malicioso? Obligas a los usuarios a elegir contraseñas seguras? Manejas los códigos de errores y los leaks relacionados? Tiene alguna contramedida por si el recaptcha en algún momento puntual no se pudiese cargar? Qué tipo de mecanismo usas para recuperar una contraseña olvidada? Evitas que las cookies puedan ser accedidas desde javascript? Compruebas que no existan 2 nombres de usuario iguales? Te cargas la url de validación para que no sea usada múltiples veces por un usuario para registrar múltiples cuentas? Te aseguras que no se envían y no se hacen consultas con parámetros vacios? Tiras excepciones y manejas errores en todas las fases de loggeo para dar marcha atrás si se detecta algún fallo o que pasa si surge algún error inesperado? Das algún tipo de salida de errores en estos casos que pueda revelar información? Tienes logs para controlar lo que pasa en la aplicación? Loggeas información sensible como tokens, sessiones, etc? Tienes algún sistema de monitoreo para poder estar al tanto si recibes algún tipo de ataque para poder responder? Avisas a los usuarios de sus loggeos y de intentos de adivinar contraseñas...

 En vez andar dando tumbos y aprender por la muy malas, podrías pasarte por el foro de dudas generales y hecharle un ojo a los libros para principiantes. También hay libros por ahí enfocados a la seguridad en el desarrollo web.