2009-03-06 5 views
16

Qual è il modo migliore per gestire le stringhe di connessione in un'applicazione Web, dal punto di vista della sicurezza? L'ho fatto in molti modi diversi. Li ho memorizzati come chiavi di impostazione web.config in chiaro. Ho anche creato una classe "Costanti" con proprietà di stringa pubbliche di sola lettura per ogni stringa di connessione.Procedure consigliate per le stringhe di connessione

Qualcuno ha qualche consiglio per la gestione delle stringhe di connessione in modo tale da non preoccuparmi che vengano scoperte maliziosamente? Sono decisamente aperto per la crittografia.

risposta

3

è possibile encrypt your connection strings nel file web.config.

memorizzare stringhe di connessione in una classe come proprietà o una costante non è sicura. chiunque usi un disassemblatore può vedere la stringa di connessione.

il modo migliore è la crittografia della configurazione.

+0

Si potrebbe anche voler usare SecureString piuttosto che una stringa regolare, quindi un dump della memoria non lo esporrà ... se si è così inclinati. – Stimul8d

2

È possibile crittografare e decrittografare sezioni del web.config utilizzando lo strumento da riga di comando Aspnet_regiis:

Encrypt: aspnet_regiis -pef "connectionStrings" "cartella c: \ \"

Decrypt: aspnet_regiis -PDF "connectionStrings" "c: \ cartella \"

1

@vartec: non è un bel SNAFU ..

IIS può infatti leggere il testo cifrato, se si esegue la crittografia utilizzando .N di serie Meccanismo di crittografia ET che non interromperà alcuna codifica UTF8 o Unicode. Microsoft lo sta incoraggiando anche come best practice.

È possibile vedere un esempio sulla crittografia stringa di connessione da questo:

"Procedura: stringhe di connessione protetta quando si utilizzano origine dati Controls"

http://msdn.microsoft.com/en-us/library/dx0f3cf2.aspx

2

Se si ha il pieno controllo del server è anche possibile memorizzare la stringa di connessione in Machine.Config. Questo può essere utile se hai molte applicazioni che funzionano con lo stesso server DB.

Non sono sicuro che valga la pena di crittografarlo poiché è necessario accedere al server in primo luogo per visualizzare machine.config. E se il tuo server è stato compromesso, Encyrption non impedirà a un hacker di estrarre le credenziali dal file di configurazione.

+0

Ti protegge dall'esposizione accidentale dei contenuti di web.config, a condizione che un utente malintenzionato non possa caricare il proprio file .aspx nella directory dell'applicazione. – finnw

+0

Un avvertimento simile si applica alle password utente hashing: protegge solo dai backup del database trapelati. Entrambi sono inutili se un utente malintenzionato ottiene il controllo del server Web, ma vale comunque la pena farlo. – finnw

+0

Facciamo questo dove lavoro così per i nostri server diversi (dev, test, prod) in modo da utilizzare sempre la stringa di connessione appropriata per ciascuno. Funziona molto bene. – spilliton