Actualmente estoy desarrollando un juego que se ejecutará en un cliente, se registrarán para este juego en línea y crearán su cuenta allí, su información se almacenará en una base de datos MySQL. Estoy creando el juego utilizando Lua + Love2D. Al iniciar el juego, se le presentará al usuario un campo de inicio de sesión y contraseña. El proceso será el siguiente:
- El usuario envía sus datos
- El cliente envía su nombre de usuario al servidor solicitando su contraseña saltada
- El cliente recibe sal del servidor y lo agrega a su entrada
- El cliente agrega la contraseña adjunta una cierta cantidad de veces usando SHA256
- El cliente envía el hash final al servidor
- El servidor comprueba que es el hash correcto
- El cliente recibe 'verdadero' o 'falso' dependiendo de si es la contraseña correcta
Ahora mi pregunta es, escuché que alguien puede interceptar fácilmente estos datos y obtener su hash de nombre de usuario, salt y contraseña, y luego básicamente enviar esta información al servidor de alguna manera para que se autentiquen en las cuentas de esas personas. ¿Cómo puedo evitar que esto suceda? ¿Puedo usar algo como una clave de autenticación? Si es así, ¿puedes explicar cómo funcionaría?