2011-02-03 9 views
8

Quali sono i modi per ottenere dal database le password del database e di altri servizi? Ho letto sull'utilizzo dei file delle proprietà del server, ma quando si dispone di un numero elevato di server diventa difficile da mantenere. Ho anche visto una soluzione che utilizza il processo di costruzione di un elemento di configurazione per "iniettare" le password, ma ciò rende difficile aggiornare la password al volo.Dove memorizzi le password del database?

Alcuni requisiti per restringere il campo delle risposte ...

  1. La password dovrebbe essere facile da modificare e propagare in caso di una violazione della sicurezza.
  2. password non può apparire nel codice (a causa di punto 1)
  3. Dovrebbe essere "non banale" per un essere umano per ottenere una versione di solo testo della password
  4. dovrebbe funzionare bene nell'applicazione web e stand alone
  5. facile da adottare da un punto di vista sviluppatore di applicazioni

Alcuni nice-to-have non include l'introduzione di un singolo punto di errore, un tempo di sviluppo rapido, e di facile comprensione.

Questo è simile nello spirito a this question ma con una forte enfasi sulla manutenibilità e si concentra di più sul caso lato server.

+0

Che ne dici di conservarlo in un database? :) –

+0

@Joe: quella era in realtà una soluzione intenzionale, ma l'idea di una parola d'ordine completa tutti quei discorsi. –

+0

Almeno devi solo ricordare una password. Puoi masterizzarlo su un CD e archiviarlo in una cassaforte. Dovrai solo ricordare la combinazione sicura quindi. :) – GolezTrol

risposta

6

È possibile memorizzarlo in testo normale in un file in una directory protetta che può essere letto solo dall'account in cui viene eseguita l'applicazione. Nel caso di un'applicazione Web, è necessario memorizzare sempre la password al di fuori della cartella radice Web.

+0

Beh, sto provando ad alzare la tua risposta, ma il sistema mi sta dicendo che ho già votato (bug?). Grazie per il tuo contributo. –

+0

Forse hai drasticamente ridimensionato troppo?Dovrebbe funzionare ora, però. – GolezTrol

1

Se si utilizza un pool di connessione al database, il nome utente, la password e altri dettagli del database vengono generalmente gestiti nel Java Web Container e presentati al codice Java come origine dati. Basta chiedere una connessione al database senza dover conoscere nessuno di questi dettagli.

+0

Utilizziamo i pool di connessione dei contenitori, motivo per cui ho incluso "e altre password di servizio" poiché abbiamo anche quelle in uscita. Nel caso Java stand alone non abbiamo un bel contenitore per gestire i data pool per noi. –

+0

Non penso che i pool di connessioni siano limitati ai server web/applicativi - credo che funzionino altrettanto bene anche con il codice standalone. – trojanfoe

+0

Corretto, ma al di fuori di un server delle applicazioni la configurazione di solito si trova all'interno dell'applicazione (per favore dimostri che ho torto). Inoltre, c'è ancora il problema in sospeso di "altri servizi" (think FTP) –

0

Oltre a memorizzarlo in un file di testo al di fuori della web root, come utilizzare la crittografia? Con la maggior parte delle lingue, è piuttosto semplice utilizzare un metodo di crittografia e, sebbene potrebbe non essere strettamente necessario per proteggere dagli attacchi Web, rende più difficile per un'altra persona che può accedere al file sul proprio sistema. Inoltre, un po 'di confusione, mascherando il file come qualcos'altro con un nome noioso che sarà probabilmente trascurato, rende meno probabile che qualcuno lo trovi anche nel caso in cui abbia accesso fisico al server.

Problemi correlati