Archiviazione di informazioni riservate tramite ASP.NET
Aggiornamento: novembre 2007
Spesso in un'applicazione ASP.NET è necessario utilizzare informazioni estremamente riservate. Ad esempio, potrebbe essere necessario utilizzare un ID utente e una password per connettersi a un database oppure memorizzare gli ID utente e le password utilizzati dai clienti per accedere all'applicazione. Sebbene sia possibile utilizzare il protocollo SSL (Secure Socket Layer) per crittografare le informazioni trasmesse attraverso la rete, è necessario proteggere tali informazioni anche quando sono archiviate sia sul server che sul client. In questo argomento vengono fornite indicazioni generali sull'archiviazione di informazioni riservate.
Nota: |
---|
Per ulteriori informazioni sulle modalità di archiviazione di informazioni riservate, vedere Improving Web Application Security: Threats and Countermeasures sul sito Web MSDN (informazioni in lingua inglese). |
Evitare l'archiviazione di informazioni riservate quando possibile
Il sistema migliore per evitare l'esposizione di informazioni riservate in un'applicazione è non archiviarle. Ridurre al minimo i punti in cui vengono archiviate le informazioni riservate. Evitare di archiviare le informazioni riservate per l'applicazione in un cookie o in un controllo che viene mantenuto nel browser, in quanto risulterebbero esposte ai client dell'applicazione. Evitare di archiviare le informazioni riservate nella logica dell'applicazione. Recuperare invece le informazioni riservate da un percorso di configurazione protetto o dal client.
Crittografare le informazioni riservate
Quando si archiviano informazioni riservate, evitare di salvarle come testo leggibile o in un formato facilmente decodificabile, ad esempio Base64. Crittografare invece le informazioni riservate in modo che, se esposte a un attacco, non sia possibile determinarne facilmente il contenuto.
Se le informazioni riservate devono solo essere verificate e non decrittografate in un formato leggibile, crittografarle mediante l'hashing unidirezionale, quindi, per confrontare le informazioni riservate ricevute da un'origine convalidata, eseguire l'hashing del valore ricevuto e confrontare gli hash per la verifica. Se ad esempio si utilizzano l'autenticazione basata su form e le appartenenze di ASP.NET per fornire l'autenticazione utente per l'applicazione, impostare il formato della password su Hashed in modo che le password vengano crittografate mediante hashing unidirezionale quando vengono archiviate nell'origine dati o confrontate per la convalida.
Quando si archiviano informazioni riservate quali stringhe di connessione, credenziali utente o chiavi di crittografia nel file Web.config per un'applicazione, crittografare le sezioni riservate del file Web.config utilizzando un provider di configurazione protetta. Per ulteriori informazioni sulla configurazione protetta, vedere Crittografia delle informazioni di configurazione utilizzando la configurazione protetta.
Per ulteriori informazioni sull'utilizzo della crittografia per proteggere informazioni riservate, vedere Modello di crittografia di .NET Framework.
Proteggere le informazioni riservate mediante le autorizzazioni
Quando si archiviano informazioni riservate in file e database, nel registro o in altre posizioni, utilizzare gli elenchi di controllo di accesso NTFS e le autorizzazioni di database per limitare l'accesso alle informazioni solo alle origini richieste e solo per l'accesso richiesto. Per ulteriori informazioni, vedere la documentazione del database o Elenchi di controllo di accesso (ACL, Access Control List) ASP.NET necessari.