Nie ma znaczenia, gdzie są przechowywane zaszyfrowane dane, ma znaczenie, w jaki sposób są szyfrowane.
Zaszyfrowane sekcje w pliku web.config są zwykle szyfrowane za pomocą interfejsu API Data Protection API , który jest niezwykle trudny do złamania bez narażania całego komputera. Możesz także użyć pojemnika na klucze RSA, który jest podobny (trudny do wyjęcia z komputera).
Myślę, że jeśli chcesz przechowywać zaszyfrowany ciąg w DLL, to w porządku, chociaż nie jest to z natury bezpieczniejsze niż zaszyfrowany plik web.config (każdy może zajrzeć do tej biblioteki DLL za pomocą Reflector ) i jest oczywiście trudniejszy do zmiany (możesz musiałbym ponownie skompilować). Ale znowu, o wiele ważniejsze jest to, jak wygenerowano ten zaszyfrowany ciąg; prawdopodobnie nie używasz tych samych dostawców, co w przypadku zaszyfrowanego pliku web.config, więc czego używasz?
Schemat szyfrowania jest tak silny, jak klucz prywatny lub wspólny sekret. Jeśli ten klucz jest również przechowywany w zestawie, równie dobrze możesz nie mieć żadnego szyfrowania. Jeśli jest przechowywany w jakiejś zewnętrznej bazie danych, powstaje pytanie, w jaki sposób zabezpieczony jest ciąg połączenia tej bazy danych. To naprawdę może prowadzić tylko do ogólnego osłabienia bezpieczeństwa.
Z drugiej strony, jeśli były usługodawca i ciąg połączenia zostały zaszyfrowane za pomocą użytkownika hasła, to byłoby bardziej bezpieczne niż przy użyciu klucza maszynowego statyczne. Z drugiej strony, jeśli używasz haseł użytkownika do szyfrowania, jest mało prawdopodobne, aby kodowałeś zaszyfrowane dane w zestawie, ponieważ trzeba je wygenerować i zapisać w odpowiedzi na działanie użytkownika (nie dewelopera).
Naprawdę nie mogę wymyślić zbyt wielu sytuacji, w których zakodowanie na stałe (zaszyfrowanego) ciągu połączenia w bibliotece DLL jest bardziej bezpieczne niż szyfrowanie odpowiedniej sekcji web.config. W najlepszym razie po prostu dodaje niedogodności, w najgorszym przypadku polega na niezdarnie napisanych niestandardowych zabezpieczeniach wypełnionych dziurami. Zrób sobie przysługę i zrób to, co zaleca Microsoft - po prostu zaszyfruj swój web.config, jeśli są tam wrażliwe dane.