Estrategia relacionada con una aplicación fuera de línea (casi siempre)

2

Actualmente estoy haciendo una pasantía en una empresa de desarrollo de software / aplicaciones, en la que tengo que tener una idea sobre cómo podemos manejar el hecho de que el usuario usará la mayoría de las aplicaciones sin conexión.

Básicamente, la aplicación es un registro de vuelo, la primera pantalla es una lista de aviones. Una vez que haga clic en un avión, podrá ver la lista de todos los vuelos que pertenecen a este avión. El usuario podrá ver toda la información del vuelo, si hay alguna pieza que cambiar, cualquier cosa que no sea natural, etc. ...

Soy totalmente nuevo en el campo de la seguridad de las aplicaciones móviles (y solo tengo un poco de conocimiento de la seguridad en general), así que he estado leyendo algunas preguntas / artículos sobre este tema, pero todavía hay algunos Cosas que no entiendo o de las que no estoy seguro.

Estamos usando CouchDB / PouchDB para la base de datos, y sé que Bcrypt se usa en el lado del servidor (y la pregunta que queda sin responder es: ¿debemos usarlo en el lado del cliente?)

Hasta ahora se me ha ocurrido esta idea:

  1. El usuario llega a su oficina por la mañana, se conecta a la aplicación en línea, y luego su contraseña se revisa y almacena en el servidor.

  2. El usuario replica su parte * de la base de datos en el teléfono / tableta, junto con     con su contraseña hash (+ sal). la base de datos está encriptada con una bolsa de cifrado

  3. El usuario ahora puede cerrar sesión e ir al campo, donde no tiene     conexión a internet.
  4. El usuario puede iniciar sesión fuera de línea, acceder y modificar su base de datos según lo necesite     por su trabajo.
  5. El usuario vuelve a su oficina (o en cualquier lugar que tenga internet     conexión) y sincroniza la base de datos de su tableta con la del servidor.

    • : Estoy diciendo "su parte de la base de datos" porque un usuario específico solo podrá trabajar en una cierta cantidad de aviones / vuelos.

Así que aquí están mis preguntas:

  • ¿Debo usar dos contraseñas? es decir, uno para el inicio de sesión en línea en el servidor, y uno para el inicio de sesión en línea? Si es así, ¿cuál sería la estrategia a adoptar?
  • ¿Dónde debo guardar la contraseña con hash en la tableta? Estoy dudando entre la base de datos local o SessionStorage, pero si lo entendiera bien, si está almacenado en SessionStorage y el usuario cierra la sesión mientras está fuera de línea, se eliminará y, por lo tanto, el usuario no podrá iniciar sesión nuevamente. ?
  • ¿Debo usar Bcrypt en el lado del cliente también y qué implica?
  • ¿Es el uso de pimienta realmente relevante? Parece que no puedo saber si el la seguridad adicional valdría la pena la implementación.
  • A nivel mundial, ¿este enfoque es bueno para este tipo de situación? Si no, ¿por qué y qué debo cambiar?
  • He leído algunas cosas sobre el token, pero tal como lo entiendo, caduca después de un cierto tiempo, y en este momento no me han dicho nada sobre cuánto tiempo estaría la tableta sin conexión antes de volver a estar en línea. Así que no creo que sea la mejor opción, ¿verdad?

Anteriormente publiqué esta pregunta en ingeniería de software , pero me han dicho que sería mejor aquí.

Además, tengo que proteger los datos en caso de que el usuario esté desconectado, desconectado y alguien haya logrado obtener acceso físico al dispositivo.

No dude en decirme si necesita más información, es posible que haya olvidado algo.

Cualquier ayuda sería muy apreciada!

    
pregunta darzang 11.06.2018 - 11:16
fuente

0 respuestas

Lea otras preguntas en las etiquetas