Non importa dove i dati crittografati sono archiviati, importa come è crittografato.
Le sezioni crittografate in un web.config sono normalmente crittografate con l'API Data Protection , che è estremamente difficile da decifrare senza compromettere l'intera macchina. Puoi anche utilizzare un contenitore di chiavi RSA, che è simile (difficile da togliere quelli dalla macchina).
Se vuoi memorizzare la stringa crittografata nella DLL, va bene, immagino, anche se non è intrinsecamente più sicuro di un web.config crittografato (chiunque può dare un'occhiata a quella DLL con Reflector ), ed è ovviamente più difficile da modificare (è necessario ricompilare). Ma ancora una volta, ciò che è molto più importante è come è stata generata quella stringa crittografata; presumibilmente non stai utilizzando gli stessi provider di un web.config crittografato, quindi cosa stai usando?
Uno schema di crittografia è strong quanto la chiave privata o il segreto condiviso. Se quella chiave è anche memorizzata nell'assieme, allora potreste anche non avere alcuna crittografia. Se è memorizzato in un database esterno, solleva la questione di come è protetta la stringa di connessione del tale database. Questo in realtà può solo portare a una sicurezza più debole in generale.
D'altra parte, se tu fossi un fornitore di servizi e la stringa di connessione fosse crittografata con una password utente , allora sarebbe più sicura rispetto all'utilizzo di una macchina statica chiave. Inoltre, se si utilizzano le password utente per crittografare, è improbabile che si stiano codificando i dati crittografati nell'assembly, poiché deve essere generato e archiviato in risposta all'azione dell'utente (non dello sviluppatore).
In realtà non riesco a pensare a troppe situazioni in cui l'hard-coding di una stringa di connessione (crittografata) nella DLL è più sicuro della crittografia della relativa sezione web.config. Nella migliore delle ipotesi è solo l'aggiunta di inconvenienti, nel peggiore dei casi si basa su una sicurezza personalizzata goffamente scritta piena di buchi. Fai un favore a te stesso e fai ciò che Microsoft consiglia: basta crittografare il tuo web.config se ci sono dati sensibili lì dentro.