Sono attualmente in tirocinio in un'azienda di sviluppo di software / app, in cui devo trovare un'idea su come possiamo gestire il fatto che l'utente utilizzerà per lo più un'app offline.
Fondamentalmente, l'app è un log di volo, la prima schermata è una lista di velivoli. Dopo aver fatto clic su un aeromobile, è possibile visualizzare l'elenco di tutti i voli appartenenti a questo aeromobile. L'utente sarà quindi in grado di vedere tutte le informazioni sul volo, se c'è un pezzo da cambiare, qualcosa di innaturale, ecc ...
Sono totalmente nuovo nel campo della sicurezza delle app mobili (e ho solo un po 'di conoscenza della sicurezza in generale), quindi ho letto alcune domande / articoli su questo argomento, ma c'è ancora del cose che non capisco o di cui non sono sicuro.
Usiamo CouchDB / PouchDB per il database, e so che Bcrypt è usato sul lato server (e la domanda rimasta senza risposta è: dovremmo usarla sul lato client?)
Finora mi è venuta in mente questa idea:
-
L'utente arriva al suo ufficio la mattina, si connette all'app online e la sua password viene quindi sottoposta a hash e archiviata sul server.
-
L'utente replica la sua parte * del DB sul telefono / tablet, insieme con la sua password hash (+ sale). il DB è crittografato con cripto-pouch
- L'utente può ora disconnettersi e andare sul campo, dove non ha connessione Internet.
- L'utente può accedere offline, accedere e modificare il proprio DB come necessario per il suo lavoro.
-
L'utente torna nel suo ufficio (o ovunque abbia Internet connessione) e sincronizza il suo DB tablet con quello del server.
- : Sto dicendo "la sua parte del DB" perché un utente specifico sarà in grado di lavorare su una determinata quantità di aerei / voli.
Quindi ecco le mie domande:
- Devo usare due password? uno per l'accesso online sul server e uno per l'accesso offline? Se sì, quale sarebbe la strategia da adottare?
- Dove devo memorizzare la password con hash sul tablet? Sto esitando tra il DB locale o SessionStorage, ma se ho capito bene, se è memorizzato su SessionStorage e l'utente si disconnette mentre offline, sarebbe cancellato e quindi l'utente non sarebbe in grado di accedere nuovamente a destra ?
- Dovrei usare anche Bcrypt sul lato client e cosa implica?
- L'uso del pepe è davvero rilevante? Non riesco a capire se il una maggiore sicurezza varrebbe la pena di essere implementata.
- A livello globale, questo approccio è buono per questo tipo di situazione? Se no, perché e cosa dovrei cambiare?
- Ho letto alcune cose sul token, ma a quanto ho capito, scade dopo un certo periodo di tempo, e al momento non mi è stato detto nulla su quanto tempo il tablet sarebbe stato offline prima di tornare online, quindi non penso che sia l'opzione migliore, ho ragione?
In precedenza ho postato questa domanda su ingegneria del software , ma mi è stato detto che sarebbe stato meglio qui.
Inoltre, devo proteggere i dati in tal caso che l'utente è offline, disconnesso e qualcuno è riuscito a ottenere l'accesso fisico al dispositivo.
Non esitare a dirmi se hai bisogno di ulteriori informazioni, potrei aver dimenticato qualcosa.
Qualsiasi aiuto sarebbe molto apprezzato!