Catatan
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba masuk atau mengubah direktori.
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba mengubah direktori.
Tidak ada satu cara yang benar untuk membuat aplikasi klien SQL Server yang aman. Setiap aplikasi unik dalam persyaratan, lingkungan penyebaran, dan populasi penggunanya. Aplikasi yang cukup aman ketika awalnya disebarkan dapat menjadi kurang aman dari waktu ke waktu. Tidak mungkin untuk memprediksi dengan akurasi apa ancaman yang mungkin muncul di masa depan.
SQL Server, sebagai produk, telah berevolusi atas banyak versi untuk menggabungkan fitur keamanan terbaru yang memungkinkan pengembang membuat aplikasi database yang aman. Namun, keamanan tidak masuk ke dalam kotak; ini membutuhkan pemantauan dan pembaruan berkelanjutan.
Ancaman umum
Pengembang perlu memahami ancaman keamanan, alat yang disediakan untuk melawannya, dan cara menghindari lubang keamanan yang ditimpa sendiri. Keamanan paling baik dapat dianggap sebagai rantai, di mana jeda dalam satu tautan membahmari kekuatan keseluruhan. Daftar berikut ini mencakup beberapa ancaman keamanan umum yang dibahas secara lebih rinci dalam topik di bagian ini.
Injeksi SQL
Injeksi SQL adalah proses di mana pengguna berbahaya memasukkan pernyataan Transact-SQL alih-alih input yang valid. Jika input diteruskan langsung ke server tanpa divalidasi dan jika aplikasi secara tidak sengaja menjalankan kode yang disuntikkan, maka serangan berpotensi merusak atau menghancurkan data. Anda dapat menggagalkan serangan injeksi SQL Server dengan menggunakan prosedur tersimpan dan perintah berparameter, menghindari SQL dinamis, dan membatasi izin pada semua pengguna.
Peningkatan hak istimewa
Peningkatan serangan hak istimewa terjadi ketika pengguna dapat mengasumsikan hak istimewa akun tepercaya, seperti pemilik atau administrator. Selalu jalankan di bawah akun pengguna dengan hak istimewa paling sedikit dan tetapkan hanya izin yang diperlukan. Hindari menggunakan akun administratif atau pemilik untuk menjalankan kode. Ini membatasi jumlah kerusakan yang dapat terjadi jika serangan berhasil. Saat melakukan tugas yang memerlukan izin tambahan, gunakan penandatanganan prosedur atau peniruan identitas hanya selama durasi tugas. Anda dapat menandatangani prosedur tersimpan dengan sertifikat atau menggunakan peniruan identitas untuk menetapkan izin sementara.
Pemeriksaan dan pengamatan cerdas
Serangan pemeriksaan dapat menggunakan pesan kesalahan yang dihasilkan oleh aplikasi untuk mencari kerentanan keamanan. Terapkan penanganan kesalahan di semua kode prosedural untuk mencegah informasi kesalahan SQL Server dikembalikan ke pengguna akhir.
Autentikasi
Serangan injeksi string koneksi dapat terjadi saat menggunakan login SQL Server jika string koneksi berdasarkan input pengguna dibangun pada waktu proses. Jika string koneksi tidak diperiksa untuk pasangan kata kunci yang valid, penyerang dapat menyisipkan karakter tambahan, berpotensi mengakses data sensitif atau sumber daya lain di server. Gunakan autentikasi Windows sedapat mungkin. Jika Anda harus menggunakan login SQL Server, gunakan SqlConnectionStringBuilder untuk membuat dan memvalidasi string koneksi pada waktu proses.
Kata Sandi
Banyak serangan berhasil karena penyusup dapat memperoleh atau menebak kata sandi untuk pengguna istimewa. Kata sandi adalah garis pertahanan pertama Anda terhadap penyusup, jadi mengatur kata sandi yang kuat sangat penting untuk keamanan sistem Anda. Membuat dan menerapkan kebijakan kata sandi untuk autentikasi mode campuran.
Selalu tetapkan kata sandi yang kuat ke sa akun, bahkan saat menggunakan Autentikasi Windows.
Di bagian ini
Menulis SQL dinamis yang aman di SQL Server
Menjelaskan teknik untuk menulis SQL dinamis yang aman menggunakan prosedur tersimpan.