Non importa dove sono archiviati i dati crittografati, importa come sono crittografati.
Le sezioni crittografate in un web.config sono normalmente crittografate con l' API Data Protection , che è estremamente difficile da decifrare senza compromettere l'intero computer. È inoltre possibile utilizzare un contenitore di chiavi RSA, che è simile (difficile da rimuovere dalla macchina).
Se vuoi archiviare la stringa crittografata nella DLL, va bene, immagino, anche se non è intrinsecamente più sicuro di un web.config crittografato (chiunque può sbirciare in quella DLL con Reflector ), ed è ovviamente più difficile cambiare (tu dovrei ricompilare). Ma ancora una volta, ciò che è molto più importante è come è stata generata quella stringa crittografata; presumibilmente non stai usando gli stessi provider che faresti per un web.config crittografato, quindi cosa stai usando?
Uno schema di crittografia è efficace solo come la chiave privata o il segreto condiviso. Se tale chiave viene anche memorizzato nella vostra assemblea, allora si potrebbe anche non avere la crittografia a tutti. Se è archiviato in un database esterno, solleva la questione di come è protetta la stringa di connessione di quel database. Questo può davvero solo portare a una sicurezza più debole nel complesso.
D'altra parte, se tu fossi un fornitore di servizi e la stringa di connessione fosse crittografata con a password utente , sarebbe più sicuro rispetto all'utilizzo di una chiave di macchina statica. Inoltre, se stai usando le password degli utenti per crittografare, è abbastanza improbabile che tu stia codificando i dati crittografati nel tuo assembly, poiché devono essere generati e archiviati in risposta all'azione dell'utente (non dello sviluppatore).
Davvero non riesco a pensare a troppe situazioni in cui la codifica hardware di una stringa di connessione (crittografata) nella DLL è più sicura della crittografia della sezione web.config pertinente. Nella migliore delle ipotesi si tratta solo di aggiungere inconvenienti, nella peggiore dei casi si basa su una sicurezza personalizzata scritta goffamente, piena di buchi. Fatti un favore e fai ciò che Microsoft consiglia: crittografa il tuo web.config se ci sono dati sensibili lì dentro.