Skenario keamanan aplikasi di SQL Server

Mengunduh ADO.NET

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 pun ancaman apa 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 pemutusan dalam satu tautan apa pun mengorbankan 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 jahat 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 SQL Server serangan injeksi 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 mengeksekusi kode. Ini membatasi jumlah kerusakan yang dapat terjadi jika serangan berhasil. Saat melakukan tugas yang memerlukan izin tambahan, gunakan penandatanganan prosedur atau peniruan hanya selama durasi tugas. Anda dapat menandatangani prosedur tersimpan dengan sertifikat atau menggunakan peniruan identitas untuk menetapkan izin untuk sementara waktu.

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 SQL Server informasi kesalahan dikembalikan ke pengguna akhir.

Autentikasi

Serangan injeksi string koneksi dapat terjadi saat menggunakan SQL Server masuk jika string koneksi berdasarkan input pengguna dibangun pada durasi. 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 SQL Server login, gunakan SqlConnectionStringBuilder untuk membuat dan memvalidasi string koneksi pada durasi.

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.

Langkah berikutnya