Peu importe où les données chiffrées sont stockées, il importe comment elles sont chiffrées.
Les sections chiffrées d'un web.config sont normalement chiffrées avec l' API Data Protection , qui est extrêmement difficile à déchiffrer sans compromettre la machine entière. Vous pouvez également utiliser un conteneur de clés RSA, qui est similaire (difficile à retirer de la machine).
Si vous voulez stocker la chaîne cryptée dans la DLL, c'est bien, je suppose, bien que ce ne soit pas intrinsèquement plus sûr qu'un web.config crypté (n'importe qui peut jeter un œil dans cette DLL avec Reflector ), et est évidemment plus difficile à changer (vous aurait besoin de recompiler). Mais encore une fois, ce qui est beaucoup plus important, c'est la façon dont cette chaîne cryptée a été générée; je suppose que vous n'utilisez pas les mêmes fournisseurs que vous le feriez pour un fichier web.config crypté, alors qu'utilisez-vous?
Un schéma de chiffrement n'est aussi solide que la clé privée ou le secret partagé. Si cette clé est également stockée dans votre assembly, vous pourriez tout aussi bien ne pas avoir de chiffrement du tout. S'il est stocké dans une base de données externe, cela soulève la question de savoir comment la chaîne de connexion de cette base de données est sécurisée. Cela ne peut que conduire à une sécurité globale plus faible.
D'un autre côté, si vous étiez un fournisseur de services et que la chaîne de connexion était chiffrée avec un mot de passe utilisateur , cela serait plus sûr que d'utiliser une clé machine statique. Là encore, si vous utilisez des mots de passe utilisateur pour chiffrer, il est peu probable que vous codiez en dur les données chiffrées dans votre assemblage, car elles doivent être générées et stockées en réponse à l'action de l'utilisateur (pas du développeur).
Vraiment, je ne peux pas penser à trop de situations où le codage en dur d'une chaîne de connexion (cryptée) dans la DLL est plus sûr que le cryptage de la section web.config correspondante. Au mieux, cela ne fait qu'ajouter des inconvénients, au pire, il s'appuie sur une sécurité personnalisée maladroitement écrite criblée de trous. Rendez-vous service et faites ce que Microsoft recommande - cryptez simplement votre web.config s'il y a des données sensibles dedans.