Ho uno scenario che mi ha turbato per anni. Se è necessario connettersi a un database o un altro servizio (come un servizio Web) utilizzando un nome utente e una password, dove sarebbe il posto più sicuro in cui archiviare queste informazioni se ci si connette tramite un assembly .NET? Capisco che dovresti cifrare la password, ma poi ti imbatti in una specie di problema uovo di gallina - bene - puoi cifrarlo, ma poi dove metti la chiave?Dove memorizzare le password db quando si usano le applicazioni Windows .NET o ASP.NET
In .NET, non è possibile codificare la password poiché è possibile decompilare il codice .NET.
Ho esaminato i diritti basati sugli assembly con Isolamento isolato, ma MS consiglia di archiviare gli elementi segreti non crittografati lì perché gli utenti privilegiati possono ottenere l'accesso, quindi, di nuovo, stiamo spostando il problema dal punto A al punto B. Quindi per esempio, un amministratore di dominio senza necessità di conoscere le informazioni in un database sarebbe in grado di ottenere l'accesso a causa della possibilità di essere un amministratore su qualsiasi workstation sul dominio.
È possibile crittografare App.Config e Web.Config, ma credo che gli utenti privilegiati possano accedere alle chiavi.
Penso che tu abbia lo stesso problema con DPAPI.
Avevo pensato di archiviare le password, crittografato in un database remoto e ottenerle tramite l'autenticazione del sistema operativo, ma il nostro reparto vieta l'archiviazione delle password sui server di database. Sono abbastanza sicuro di essere bloccato e volevo una conferma.
So che è un po 'di tempo fa, ma ho fornito una risposta alla tua domanda su come memorizzare le password crittografate. Per favore guarda. – Matt