2009-10-01 7 views

risposta

13

vi consiglio uno dei tre approcci:

  • Evitare di conservare la password a tutti utilizzando i token di autenticazione. In questo modello, l'utente si registra in una volta e il server genera un token univoco, grande e sparse che il client può memorizzare e utilizzare come "password" di accesso. Il server accetta questo token da un solo client alla volta, quindi se due client tentano di usarlo contemporaneamente, il token viene invalidato. Anche il token viene generalmente invalidato dopo un periodo di tempo (1 settimana, 2 settimane, un anno, qualunque sia il caso). Quando il token viene invalidato, l'utente deve eseguire nuovamente l'accesso manualmente e il processo viene ripetuto. Questo è fondamentalmente l'approccio di Gmail e di accessi simili a siti web.

  • Se è necessario memorizzare la password, è consigliabile affidarsi al sistema operativo per gestirlo per conto dell'utente. Sia Windows che Mac dispongono di buoni sistemi di archiviazione sicuri (rispettivamente DPAPI e Keychain). Linux non ha una buona soluzione sempre disponibile, quindi dipende dal tuo mercato. Il vantaggio dell'utilizzo del sistema operativo è che il sistema operativo è in grado di fornire protezioni che non è possibile fornire facilmente e l'utente può gestire centralmente la protezione generale dell'archiviazione del sistema operativo (tramite smartcard, ecc.) A un livello che è improbabile che possa riprodursi. Gli archivi sicuri del sistema operativo sono anche in genere abbastanza convenienti per l'utente.

  • Se nessuna di queste è un'opzione, memorizzare un file crittografato con una password principale che l'utente deve immettere ogni volta che avvia l'app. È così che funziona Firefox (o almeno l'ultima volta che ho guardato, che è stato un po 'di tempo). Questo è ragionevolmente sicuro, ma molto meno conveniente per l'utente (e la scarsa praticità spesso significa scarsa adozione da parte degli utenti, o scarso utilizzo attraverso password più semplici, ecc.). Vorrei investigare il codice di Firefox come un esempio di come implementarlo.

+0

Quali sono alcune possibili soluzioni se stai usando Linux come sistema operativo? – artgon

+1

@artgon, ricorda che la prima regola di una memorizzazione sicura delle password è che l'utente deve eventualmente autenticarsi digitando una password o presentando un token. Se trovi una soluzione che non lo richiede, allora hai trovato una soluzione non sicura. Detto questo, le cose da guardare sono GNOME Keyring, pwsafe e keystorage.net (per mono). Di loro, probabilmente inizierei con GNOME Keyring. –

+0

Grazie per questa bella risposta @RobNapier Una domanda: come possiamo verificare se due client stanno cercando di utilizzare un token allo stesso tempo? –

1

Il modo migliore sarebbe affidarsi a qualcun altro per archiviarli e fidarsi di quella parte. Ma se devi avere il controllo ti suggerisco di leggere un buon libro sui sistemi sicuri e poi ripensarci. Ci sono molte variabili da considerare e la maggior parte delle volte si limita a mitigare il rischio rispetto al costo.

0

KeePass fornisce anche un API da utilizzare per gli sviluppatori.

+0

Codice di esempio ...? –