Salva una password per evitare l'interazione dell'utente

5

Sto creando un servizio Windows che invia email a un utente. Utilizza un account Gmail per inviare l'e-mail, quindi ha bisogno di una password per accedere all'account. Ha anche bisogno di farlo automaticamente, senza l'interazione dell'utente. Come posso archiviare in modo sicuro la password in modo che l'applicazione possa autenticarsi con Gmail?

Finora le opzioni a cui posso pensare sono:

  1. Codice di sicurezza della password
  2. Salva la password in un file di testo normale con autorizzazioni limitate

Nessuno dei due è molto sicuro in un ambiente Windows.

    
posta Phil 16.12.2011 - 19:07
fonte

4 risposte

6

Penso che il server SMTP di google supporti OAuth, quindi non è necessario memorizzare la password. Ciò richiede l'interazione dell'utente (una tantum) per l'impostazione, ma dovresti chiedere all'utente di registrarti comunque, quindi quando lo fai puoi anche stabilire il link OAuth a Google. Scopri di più in sito di assistenza di Google .

    
risposta data 16.12.2011 - 20:01
fonte
5

Probabilmente si desidera utilizzare DPAPI per archiviare la password in modo sicuro all'interno di Windows. Ciò ti consente di mantenere la password crittografata e Windows gestirà le chiavi per te e potrà essere bloccata all'utente o all'applicazione. Ovviamente, un utente con i privilegi di amministratore può accedere alla chiave. Per maggiori informazioni: link

Potresti anche rendere un po 'più difficile trovare la posizione della password con spazio di archiviazione isolato: link . Detto questo, l'archiviazione isolata NON è un meccanismo di sicurezza.

    
risposta data 16.12.2011 - 20:13
fonte
1

Per proteggere la password, è necessario garantire l'accesso ai file. Ciò significa che solo gli utenti fidati possono avere accesso fisico al server (dovrebbe trovarsi in una stanza del server bloccata) o accesso remoto (condivisioni di file, Desktop remoto, ecc.).

Se si intende distribuire l'applicazione, la password (e il nome utente) devono essere memorizzati in un file di configurazione in modo che altri utenti possano configurarlo per utilizzare il proprio utente e la propria password. (E hanno anche bisogno di proteggere il proprio server.)

    
risposta data 16.12.2011 - 20:06
fonte
0

Direi perché è .NET, e la decompilazione comporta il download di ILSpy e la spesa di circa 30 secondi per leggere la tua fonte quasi grezza (compresi i nomi delle variabili) ... Probabilmente non mi preoccuperei nemmeno di essere al di fuori dell'invio di tutto richieste a un server che possiedi che eseguirà l'autenticazione, chiunque non sia pigro terminale può decrittografare la password, non importa quanto tempo sprechi nella crittografia pesante sui file memorizzati localmente.

Probabilmente lo farei in modo che tu possa cambiare il server SMTP, e assicurarti che il software venga ridistribuito che distribuisca quello con le impostazioni del server SMTP vuoto, e in pratica cancelli l'account GMail se non lo fanno t.

Se vuoi sentirti un po 'più sicuro, puoi inserire qualcosa di semplice, come un tasto AES + la password crittografata, e usarlo come file di configurazione, ma questo non fermerà nessuno dei programmatori competenti, ma almeno non hai passato giorni o settimane a cercare di sviluppare qualcosa di troppo complicato che posso ancora crackare nella stessa quantità di tempo (essendo come devo solo aggiungere il tuo exe come risorsa, esegui la chiamata per estrarre il tuo config e leggi le variabili grezze in memoria).

Anche se potresti anche basarti su base64 in modo che non sia crudo (perché è stupido-facile), perché come ho detto, tutto ciò che fai è abbastanza facile da decifrare.

    
risposta data 16.12.2011 - 19:39
fonte

Leggi altre domande sui tag