Esta es una publicación cruzada de mi Programmers.StackExchange post - Creo que este podría ser un mejor foro para hacer esta pregunta. Administradores: elimine cualquiera de ellos como lo considere oportuno.
En mi aplicación móvil, estoy almacenando el nombre de usuario de una persona que ha iniciado sesión y descargando algunos datos para el nombre de usuario dado / almacenado. Cuando el usuario busca actualizaciones de su contenido de datos en el servidor, el servidor reparte un delta del contenido, basado en el nombre de usuario. La aplicación luego actualiza su pantalla local en consecuencia.
El problema es que, dado que estoy usando localStorage, no hay garantía de que alguien no editará el nombre de usuario almacenado localmente y tratará de solicitar datos destinados a otra persona.
¿Cuál sería la mejor manera de sortear este posible agujero de seguridad? Por favor comente sobre este método que planeo implementar:
- Cada vez que inicie sesión, se generará y almacenará una cadena aleatoria para futuras comprobaciones en una base de datos, junto con su nombre de usuario y la fecha / hora de la solicitud.
- Cada vez que se recibe una solicitud para descargar datos de un nombre de usuario, debe ir acompañada de la cadena del intento anterior. Además, cada actualización nueva para el cliente está acompañada por una nueva cadena aleatoria, que se almacena en la base de datos y la anterior se considera caducada.
- Si la cadena aleatoria no se proporciona correctamente, el usuario se desconecta de la aplicación móvil (ya que esto podría ser alguien que manipule la aplicación).
La ventaja que veo para este método es que también tengo una pista de auditoría para verificaciones posteriores y análisis forense. ¿Cuáles son los defectos y qué podría mejorar?