Tidak masalah di mana data terenkripsi disimpan, itu penting bagaimana itu dienkripsi.
Bagian yang dienkripsi dalam web.config biasanya dienkripsi dengan API Perlindungan Data , yang sangat sulit untuk diretas tanpa mengorbankan seluruh mesin. Anda juga dapat menggunakan wadah kunci RSA, yang serupa (sulit untuk mengeluarkannya dari mesin).
Jika Anda ingin menyimpan string terenkripsi di DLL, tidak apa-apa, saya kira, meskipun itu secara inheren tidak lebih aman daripada web.config terenkripsi (siapa pun dapat mengintip ke dalam DLL dengan Reflector ), dan jelas lebih sulit untuk berubah (Anda harus mengkompilasi ulang). Tetapi sekali lagi, yang jauh lebih penting adalah bagaimana string terenkripsi itu dihasilkan; mungkin Anda tidak menggunakan penyedia yang sama seperti yang Anda lakukan untuk web.config terenkripsi, jadi apa yang Anda gunakan?
Skema enkripsi hanya sekuat kunci pribadi atau rahasia bersama. Jika kunci itu juga disimpan dalam rakitan Anda, maka Anda mungkin juga tidak memiliki enkripsi sama sekali. Jika itu disimpan di beberapa database eksternal, maka menimbulkan pertanyaan bagaimana yang database connection string dijamin. Ini benar-benar hanya dapat menyebabkan keamanan yang lebih lemah secara keseluruhan.
Di sisi lain, jika Anda adalah penyedia layanan dan string koneksi dienkripsi dengan kata sandi pengguna , maka itu akan lebih aman daripada menggunakan kunci mesin statis. Kemudian lagi, jika Anda menggunakan kata sandi pengguna untuk mengenkripsi, sangat tidak mungkin bahwa Anda akan meng-coding data terenkripsi dalam perakitan Anda, karena itu perlu dibuat dan disimpan sebagai respons terhadap tindakan pengguna (bukan pengembang).
Sungguh saya tidak bisa memikirkan terlalu banyak situasi di mana pengkodean yang sulit (dienkripsi) string koneksi di DLL lebih aman daripada mengenkripsi bagian web.config yang relevan. Paling-paling itu hanya menambah ketidaknyamanan, paling buruk itu bergantung pada beberapa keamanan kebiasaan yang ditulis dengan canggung yang dilubangi lubang. Bantulah diri Anda sendiri dan lakukan apa yang direkomendasikan oleh Microsoft - cukup enkripsi web.config Anda jika ada data sensitif di sana.