¿Es segura la autenticación simple si está sobre HTTPS?

1

Fondo
Para mi aplicación, necesito saber si los usuarios han ingresado la combinación de contraseña de correo electrónico correcta. Cosas bastante comunes. Estoy usando HTTPS, y helado y hash las contraseñas.

Pregunta
Ahora, lo que me pregunto es si debo responder literalmente desde mi servidor con JSON que dice successfulLogin:true / successfulLogin:false ?

Mis pensamientos
Para mí eso parece justo, pero no estoy seguro de que sea fácil para alguien falsificar y enviar. Otra cosa que estoy haciendo es que estoy enviando una clave con el POST para que la secuencia de comandos PHP solo se ejecute si su clave y esa clave coinciden.

    
pregunta Dallas 13.07.2016 - 06:49
fuente

1 respuesta

2

Autenticación

El servidor debe cuidar el estado (por ejemplo, si el usuario ha iniciado sesión o no), no el cliente. Si bien es perfectamente correcto enviar JSON con información sobre el estado (por ejemplo, sí, ha iniciado sesión) a través de HTTPS, es el servidor el que debe recordar si el usuario en particular inició sesión o no. El servidor nunca puede confiar en el cliente.

La forma en que lo hace es usar una variable de sesión en el servidor, es decir, una variable conectada a este usuario en particular, que realiza un seguimiento si ella está registrada o no:

$_SESSION["loggedin"] = true;

Luego, cada vez que el usuario solicite información que solo debería estar disponible para los usuarios que han iniciado sesión, debe verificar que esta variable de sesión sea verdadera. De esa manera, no importa si alguien tuvo problemas con tu respuesta JSON, a menos que hayan proporcionado la contraseña correcta, el servidor no los verá como iniciados.

Lea más sobre las sesiones en PHP aquí y here .

Una cosa más: si su cliente posee datos confidenciales que no deberían estar disponibles para el usuario a menos que el servidor la autentique, entonces esta es una situación muy diferente, y deberá tomar precauciones adicionales. Lo mismo es cierto si el cliente realiza acciones en nombre del usuario.

Tecla de envío en POST

  

Otra cosa que estoy haciendo es que estoy enviando una clave con el POST para que el script PHP solo se ejecute si su clave y esa clave coinciden.

No estoy seguro de lo que estás diciendo aquí. Esto podría ser completamente superfluo, pero no estoy seguro de entenderlo correctamente.

Rodando tu propio

Tenga en cuenta que hacer un sistema de autenticación completo no es fácil. Hay un montón de escollos distintos a los que se tratan en este post. En lugar de hacer rodar el suyo, le sugeriría que verifique si existe algún marco PHP existente que pueda usar.

    
respondido por el Anders 13.07.2016 - 09:43
fuente

Lea otras preguntas en las etiquetas