2008-09-03 11 views
26

Nel web-application sto sviluppando Attualmente uso una soluzione ingenua durante la connessione al database:Come evitare di avere la password del database memorizzata in testo in chiaro in codice sorgente?

Connection c = DriverManager.getConnection("url", "username", "password"); 

Questo è abbastanza pericoloso. Se un utente malintenzionato ottiene l'accesso al codice sorgente, ottiene anche l'accesso al database stesso. In che modo la mia applicazione Web può connettersi al database senza memorizzare la password del database in testo in chiaro nel codice sorgente?

risposta

5

Nel NET, la convenzione è quello di memorizzare connectionStrings in un file di configurazione separato.

A proposito, il config file can be encrypted.

Se si utilizza Microsoft SQL Server, tutto diventa irrilevante se si utilizza un account di dominio per eseguire l'applicazione, che quindi utilizza una connessione trusted al database. In tal caso, la connessione non conterrà alcun nome utente e password.

1

A meno che non manchi il punto, la connessione deve essere gestita dal server tramite un pool di connessioni, pertanto le credenziali di connessione sono detenute dal server e non dall'app.

In genere, in genere, creo una convenzione in cui l'applicazione Web frontend (in una DMZ) parla solo al DB tramite un servizio Web (nel dominio), fornendo quindi una separazione completa e una maggiore sicurezza del DB.

Inoltre, non concedere mai privilegi all'account db oltre o superiore a ciò che è essenzialmente necessario.

Un approccio alternativo consiste nell'eseguire tutte le operazioni tramite stored procedure e concedere all'utente dell'applicazione l'accesso solo a questi proc.

1

Supponendo che si stia utilizzando MS SQL, è possibile usufruire dell'autenticazione di Windows che non richiede alcun nome utente/pass in qualsiasi parte del codice sorgente. Altrimenti dovrei essere d'accordo con gli altri poster che raccomandano app.config + encryption.

0
  1. Creare un O/S utente
  2. Mettere la password in una variabile d'ambiente O/S per l'utente
  3. eseguire il programma come quell'utente

Vantaggi:

  1. Solo root o quell'utente può visualizzare le variabili di ambiente O/S dell'utente
  2. Riavvia le sopravvivenze
  3. Non si può mai verificate accidentalmente password di controllo del codice sorgente
  4. Non c'è bisogno di preoccuparsi di avvitamento permessi dei file
  5. Non è necessario preoccuparsi di dove memorizzare una chiave crittografata
  6. Opere X- piattaforma