Estoy trabajando en un juego multijugador usando WebSockets. He decidido que todos los datos de los usuarios se almacenarán en el cliente, eliminando la necesidad de autenticación mediante contraseñas, etc.
LocalStorage
'save' -> '{"key":"value", "key2":"value2"}'
'hash' -> '<hash of save>'
La idea es almacenar los datos del usuario en texto plano, pero también almacenar un hash que solo puede calcular el servidor (ejecutando Node.JS). El cliente enviará tanto el save
como el hash
al servidor para que sea verificado y cargado en la memoria para esta sesión.
Ahora, mi pregunta es:
- Si uso SHA256 para hacer un hash de todos los datos
save
, ¿cómo puedo evitar que un usuario genere su propio hash para los datos? - Luego, (suponiendo que la respuesta a la parte 1 sea 'sal',) ¿el uso de sal me mantendrá a salvo o se puede calcular esto? (Puedo hacer la sal en parte diferente para cada usuario)