2012-06-27 11 views
8

Non mi riferisco alle password che non devono essere utilizzati (come ad esempio le password per altri utenti di mio sito - nel qual caso io davvero non devono memorizzarli Vedere https://stackoverflow.com/a/1054069/939213..) quindi la semplice memorizzazione degli hash non è un'opzione.Qual è il modo migliore per memorizzare una password o una chiave privata su un host web?

Mi riferisco alla memorizzazione di password per un database SQL e una chiave privata che il software sul server condiviso deve utilizzare.

Suppongo che non ci sia il veramente modo sicuro per farlo. Voglio solo sapere che cos'è il il migliore in questa situazione.

Sto cercando di tenerli al sicuro dagli hacker (sullo stesso host web o meno). Non da altri che hanno il permesso di vedere i file.

E 'il codebehind di ASP.Net che li utilizzerà.

+0

Quali altri usi appropriati ci sono per una password oltre alla verifica? A cosa serve una password? –

+0

Il modo migliore? È per ** non ** memorizzare tutte le informazioni .... non memorizzare la password di per sé - memorizzare un hash salato di esso. –

+0

da chi stai cercando di proteggere queste informazioni? la chiave nel tuo web.config sarà * sicura * dal pubblico, ma non da chi ha accesso al file e/o al database. con ogni probabilità, dovrai determinare quale livello di accesso a queste informazioni è appropriato – Didaxis

risposta

1

Windows offre il Data Protection API (DPAPI) appositamente per questo scopo. Esaminare la classe ProtectedData per utilizzarla da .NET.

Il vantaggio di DPAPI è che i dati sensibili vengono crittografati in base alle credenziali di accesso dell'utente di Windows, il che significa che è sicuro a meno che l'account di Windows non venga compromesso.

3

Il modo migliore per memorizzare la password è non memorizzarlo. Utilizzare l'autenticazione integrata (Windows) per connettersi a SQL Server. Ciò comporta l'esecuzione del pool di applicazioni IIS come utente specifico (Windows) e granting that user access per accedere al database ed eseguire le query necessarie.

Vedi anche SQL Server Integrated Authentication Mode

Oltre ad essere più sicuro, si comporta meglio. L'utilizzo di stringhe di connessione per utente sconfigge il pool di connessioni.

EDIT:

Se è assolutamente necessario memorizzare la password, quindi utilizzando Encrypted Connection Strings in ASP.NET è la strada da percorrere. Questo si prende cura dell'uso di DPAPI per archiviare correttamente la stringa di connessione e la chiave della macchina, riducendo la possibilità che si rovini tutto e pensi di averlo protetto quando non lo hai fatto.

anche: Encrypting Connection String in web.config

+0

-1. Non è davvero una risposta secondo me. OP sta chiedendo in particolare un modo per _store_ la password. –

+0

Nel contesto della sicurezza, sì.Se mi chiedi il modo migliore per evitare di morire in un incidente aereo, la risposta "non volare da nessuna parte" sembra ragionevole. La risposta * corretta * è quella che ho dato- dovresti usare l'autenticazione integrata ogni volta che è possibile. Il PO non ha detto che l'integrazione non era un'opzione. –

+0

Ma se hai bisogno di volare, sceglierai il modo più sicuro. Il software sul sito deve usare quelle cose. – ispiro

Problemi correlati