Estoy haciendo un sitio web 100% en ReactJS, es un complejo simple/medio, este tiene un inicio de sesión, perfil y otras secciones más. Después de que los usuarios inicien sesión en el sitio, la devolución de llamada de inicio de sesión devuelve algunos valores importantes como: "Token, UserRole". Actualmente estoy almacenando estos valores en el cliente web usando localStorage .
Mi duda es la siguiente: ¿Hay una mejor manera de almacenar estos valores? Porque si alguna persona cambia el valor desde la consola del navegador, esto podría ser un GRAN PROBLEMA porque podría cambiar el rol y luego ejecutar cosas que nunca debería hacer.
Pensé en hacerlo con Redux, pero si los usuarios actualizan el sitio web, pierden los valores, por lo que no estoy muy seguro de elegir esto.
¿Qué piensan chicos?
¡TIA!
La regla general es nunca confiar en los datos almacenados en el lado del cliente, a excepción de un token de autenticación o el equivalente. Todos los cambios que realice el usuario que involucren al servidor deben verificarse en el servidor. Entonces, en lugar de:
si alguna persona cambia el valor desde la consola del navegador, esto podría ser un GRAN PROBLEMA porque podría cambiar el rol y luego ejecutar cosas que nunca debería hacer
En cambio, lo correcto sería que, cuando el cliente quiera hacer algo (como editar su perfil), haga que el cliente envíe su token de autenticación (o ID de sesión) con el resto de la carga útil a su servidor. Haga que su servidor examine el token, verifique que el usuario asociado con el token realmente tenga los permisos necesarios para lo que quiere hacer y solo luego continúe procesando la solicitud.
Si también almacena información en Redux o en otro lugar, no tiene ningún impacto.
El almacenamiento de información relacionada con el inicio de sesión en el lado del cliente es relativamente común y no es intrínsecamente malo; solo asegúrese de verificarlo siempre en el servidor cuando se solicite algo que requiera permisos.
Un enfoque que se usa es que el servidor cree un JWT encriptado que solo el servidor puede decodificar, que se envía con las solicitudes.