Melindungi Informasi Koneksi
Melindungi akses ke sumber data Anda adalah salah satu tujuan terpenting ketika mengamankan aplikasi. String koneksi menimbulkan potensi kerentanan jika tidak diamankan. Menyimpan informasi koneksi dalam teks biasa atau menyimpannya dalam memori berisiko membahayakan seluruh sistem Anda. string Koneksi ion yang disematkan dalam kode sumber Anda dapat dibaca menggunakan Ildasm.exe (Il Disassembler) untuk melihat bahasa perantara umum (CIL) dalam rakitan yang dikompilasi.
Kerentanan keamanan yang melibatkan string koneksi dapat muncul berdasarkan jenis autentikasi yang digunakan, bagaimana string koneksi disimpan dalam memori dan pada disk, dan teknik yang digunakan untuk membuatnya pada durasi.
Gunakan Autentikasi Windows
Untuk membantu membatasi akses ke sumber data, Anda harus mengamankan informasi koneksi seperti ID pengguna, kata sandi, dan nama sumber data. Untuk menghindari paparan informasi pengguna, kami sarankan sedapat mungkin menggunakan autentikasi Windows (kadang-kadang disebut sebagai keamanan terintegrasi). Autentikasi Windows ditentukan dalam string koneksi dengan menggunakan kata kunci Integrated Security
atau Trusted_Connection
, menghilangkan kebutuhan untuk menggunakan ID pengguna dan kata sandi. Saat menggunakan autentikasi Windows, pengguna diautentikasi oleh Windows, dan akses ke sumber daya server dan database ditentukan dengan memberikan izin kepada pengguna dan grup Windows.
Untuk situasi di mana tidak memungkinkan untuk menggunakan autentikasi Windows, Anda harus menggunakan dengan sangat berhati-hati karena kredensial pengguna terpapar dalam string koneksi. Dalam aplikasi ASP.NET, Anda dapat mengonfigurasi akun Windows sebagai identitas tetap yang digunakan untuk menyambungkan ke database dan sumber daya jaringan lainnya. Anda mengaktifkan peniruan identitas dalam elemen identitas dalam file web.config dan menentukan nama pengguna dan kata sandi.
<identity impersonate="true"
userName="MyDomain\UserAccount"
password="*****" />
Akun identitas tetap harus merupakan akun hak istimewa rendah yang telah diberikan hanya izin yang diperlukan dalam database. Selain itu, Anda harus mengenkripsi file konfigurasi sehingga nama pengguna dan kata sandi tidak terekspos dalam teks yang jelas.
Jangan Gunakan File Universal Data Link (UDL)
Hindari menyimpan string koneksi untuk OleDbConnection dalam file Universal Data Link (UDL). UDL disimpan dalam teks yang jelas dan tidak dapat dienkripsi. File UDL adalah sumber daya berbasis-file eksternal ke aplikasi Anda, file tersebut tidak dapat diamankan atau dienkripsi menggunakan .NET Framework.
Hindari Serangan Injeksi dengan Penyusun String Koneksi
Serangan injeksi string koneksi dapat terjadi saat penggabungan string dinamis digunakan untuk membangun string koneksi berdasarkan pada input pengguna. Jika input pengguna tidak divalidasi dan teks atau karakter berbahaya tidak lolos, penyerang berpotensi dapat mengakses data sensitif atau sumber daya lain di server. Untuk mengatasi masalah ini, ADO.NET 2.0 memperkenalkan kelas penyusun string koneksi baru untuk memvalidasi sintaks string koneksi dan memastikan bahwa parameter tambahan tidak digunakan. Untuk informasi selengkapnya, lihat Pembuat String Koneksi.
Gunakan Persist Security Info=False
Nilai default untuk Persist Security Info
adalah salah; kami sarankan menggunakan default ini di semua string koneksi. Mengatur Persist Security Info
ke true
atau yes
memungkinkan informasi yang sensitif-keamanan, termasuk ID pengguna dan kata sandi, diperoleh dari koneksi setelah koneksi dibuka. Ketika Persist Security Info
diatur ke false
atau no
, informasi keamanan dibuang setelah digunakan untuk membuka koneksi, memastikan bahwa sumber yang tidak tepercaya tidak memiliki akses ke informasi sensitif-keamanan.
Mengenkripsi File Konfigurasi
Anda juga bisa menyimpan string koneksi dalam file konfigurasi, yang menghilangkan kebutuhan untuk menyematkannya dalam kode aplikasi Anda. File konfigurasi adalah file XML standar yang rangkaian elemen umunya telah ditentukan oleh .NET Framework. String koneksi dalam file konfigurasi biasanya disimpan di dalam elemen < connectionStrings> di app.config untuk aplikasi Windows, atau file web.config untuk aplikasi ASP.NET. Untuk informasi selengkapnya tentang dasar-dasar menyimpan, mengambil, dan mengenkripsi string koneksi dari file konfigurasi, lihat String Koneksi dan File Konfigurasi.