Come posso proteggere il mirror di un client del database del server?

2

Lo scenario è il seguente:

  • Ci sono clienti a cui gli utenti possono accedere e lavorare.
  • Questi client possono essere online o offline.
  • C'è un database centrale su un server, contenente tutti i dati di autorizzazione.
  • I client hanno ciascuno un mirror di una parte del database centrale.
  • A intervalli regolari, il client passa online per connettersi al server centrale e aggiorna il suo database locale in modo che corrisponda a quello del server centrale.

Lo scopo del database di autenticazione locale è che un programma in esecuzione sul client può determinare quali livelli di utenti di accesso (quando il client è offline) sono autorizzati a eseguire il programma.

Esistono best practice generali su come proteggere il database locale sul client da essere visualizzato e manipolato da utenti non esperti?

    
posta Lars Andren 11.01.2012 - 10:28
fonte

2 risposte

2

Questi database (locali e centrali) contengono dati di autorizzazione o di autenticazione (o entrambi)? La tua domanda si riferisce ad esso in entrambi i modi.

Ma, qualunque esso sia, se il database è locale e l'utente (o, equivalentemente, un processo in esecuzione come tale utente) deve essere in grado di leggerlo (ad esempio per verificare che abbiano un'autenticazione / autorizzazione valida) e che leggere deve essere (per definizione!) prima che l'utente sia autenticato e autorizzato, quindi sei sfortunato: l'utente dovrà avere accesso in lettura in modo che sia in grado di leggere i dati.

Potrebbe essere possibile impedire la modifica dei dati (o almeno rilevare e rifiutare tali modifiche, ad esempio tramite una firma crittografica / crittografia a chiave pubblica utilizzando una chiave privata detenuta sul server la cui coppia di chiavi pubbliche è trattenuta sul computer client) ma l'utente potrebbe comunque sovvertire l'autenticazione / autorizzazione all'interno della modalità "offline" dell'applicazione client modificando / inserendo nel codice in esecuzione localmente.

Oltre a tutti questi "roadblock" dovrai anche assicurarti che quando il client si ricollega, il server previene eventuali modifiche non autorizzate apportate durante la modalità offline dalla propagazione al server.

    
risposta data 12.01.2012 - 18:24
fonte
1

Dovrei dire due cose:

1- Questo non è un buon modello se gli utenti hanno un strong incentivo sufficiente ad accedere ai dati a cui non dovrebbero avere accesso (dal momento che sembra abbiano tutti i dati ma il software client impedisce loro di "vedere" tutti di esso in base alle autorizzazioni definite nel database)

2- Se devi farlo nel modo in cui dici, devi crittografare il database del cliente.

    
risposta data 12.01.2012 - 19:31
fonte

Leggi altre domande sui tag