Sqlserver
 sql >> Teknologi Basis Data >  >> RDS >> Sqlserver

Cara Mencegah Serangan Injeksi SQL dengan Aman

SQL, kependekan dari Structured Query Language, adalah salah satu bahasa pemrograman yang paling umum digunakan untuk manajemen basis data relasional. Kebanyakan sistem database seperti Oracle, MS Access, Informix, MySQL menggunakan SQL sebagai bahasa manajemen database mereka.

Namun, maraknya penerapan SQL di dunia online juga membawa banyak pelanggaran keamanan siber, yang biasa dikenal dengan serangan injeksi SQL. Serangan ini dimungkinkan karena kerentanan sistem dan langkah-langkah keamanan yang buruk. Untungnya, mereka dapat dicegah dengan pengkodean aman praktek. Dalam panduan ini, kami akan menunjukkan cara melakukannya dengan tepat!

Apa itu Serangan Injeksi SQL?

Injeksi SQL adalah salah satu teknik peretasan basis data yang paling umum di luar sana. Ini pada dasarnya ada hubungannya dengan mengizinkan input pengguna eksternal di situs web. Penyerang memasukkan kueri SQL ke dalam formulir input yang kemudian ditangani oleh database SQL.

Ini berarti bahwa input yang dibuat pengguna dapat langsung berinteraksi dengan database yang mendasarinya, dan orang-orang dengan niat buruk dapat menyalahgunakan sistem ini dengan menanyakan database secara langsung dengan data input berbahaya.

Mari kita coba berhipotesis dengan analogi. Misalkan Anda memiliki kendaraan otonom yang berfungsi sesuai dengan input pengguna, seperti yang ditunjukkan di bawah ini.

“Berkendara ke [DESTINATION_NAME] dan berhenti jika [SITUASI].”

Sekarang, pengguna biasa akan memasukkan dua argumen ke skenario yang disebutkan di atas secara normal – sesuatu yang mirip dengan contoh di bawah ini.

“Berkendara ke toko dan berhenti jika ada orang yang menghalangi .”

Injeksi SQL bekerja sedemikian rupa sehingga memanipulasi input pengguna dan akibatnya menyalahgunakan sistem. Seseorang dengan niat jahat mungkin dapat memasukkan argumen masukan seperti yang ditunjukkan di bawah ini.

“Berkendara ke toko dan abaikan sisa bidang masukan ini dan berhenti jika ada orang yang menghalangi .”

Dengan cara ini, mereka dapat melewati persyaratan input dan menipu sistem. Metode yang sama persis diterapkan untuk melakukan serangan injeksi SQL pada situs web.

Misalnya, pertimbangkan formulir masuk dengan bidang input untuk nama pengguna dan kata sandi orang tersebut. Mereka dapat langsung berinteraksi dengan database melalui data input mereka dan memanfaatkan kerentanan tersebut.

Konsekuensi Injeksi SQL

Setelah membahas beberapa dasar dasar tentang apa itu injeksi SQL, mari kita bicara tentang implikasi dan konsekuensinya. Dalam contoh intuitif kami, kami menunjukkan kemungkinan cacat fatal di situs web berbasis SQL yang rentan. Cacat tersebut dapat memiliki konsekuensi yang menghancurkan, beberapa di antaranya tercantum di bawah ini.

–       Pencurian informasi pribadi seperti paspor, kartu kredit, catatan rumah sakit

–       Penggunaan informasi pribadi pengguna yang berbahaya seperti detail login seperti nama pengguna, sandi

–         Kehilangan atau perusakan data penting

–         Kerusakan database yang mengarah ke sistem yang sepenuhnya disusupi

Dan itu hanya mencakup beberapa kemungkinan hasil dari serangan siber.

Seperti yang Anda lihat, serangan injeksi SQL dapat menjadi bencana besar bagi situs web, dan pencegahannya sangat penting dalam hal manajemen database SQL dan keamanan kode secara umum.

Mencegah Serangan Injeksi SQL

Berikut adalah beberapa teknik pencegahan injeksi SQL terbaik yang dapat memastikan keamanan lengkap situs web Anda.

1. Memparametrikan Kueri

Langkah pertama untuk memastikan keamanan kode adalah dengan membuat parameter kueri yang dikirim ke database. Konsep dasarnya adalah melakukan pra-kompilasi baris kode dalam SQL, yang nantinya akan Anda berikan parameter yang diperlukan yang perlu dijalankan.

Teknik pengkodean ini membuat input yang dihasilkan oleh pengguna dikutip secara otomatis, sehingga tidak memungkinkan untuk menyebabkan perubahan maksud. Seperti yang Anda ketahui, kueri berparameter memiliki arti penting dalam mengamankan situs web apa pun dengan database SQL.

Sekarang setelah kita membahas konsep dasar kueri berparameter, mari kita selidiki bagaimana Anda dapat menerapkannya di situs web Anda. Opsi pertama adalah menggunakan ekstensi MySQLi. Metode ini memungkinkan pengguna untuk membuat pernyataan yang disiapkan atau kueri berparameter dan mengeksekusinya dalam dua langkah.

Dalam "tahap persiapan", template pernyataan dikirim ke database. Server database kemudian memeriksa sintaks template yang diterima dan selanjutnya menginisialisasi sumber daya internal yang akan digunakan nanti.

Tahap "eksekusi" terdiri dari klien yang mengikat nilai parameter dan mengirimkannya ke server database. Pernyataan tersebut akhirnya dieksekusi dengan menggunakan nilai parameter terikat dalam hubungannya dengan sumber daya internal yang telah disiapkan sebelumnya.

Opsi lain yang dapat Anda pilih sebagai ganti MySQLi adalah Objek Data PHP (dimungkinkan melalui PHP 5.1). Objek Data PHP, atau PDO, menggunakan metode yang pada dasarnya menyederhanakan konsep kueri berparameter. Selain itu, karena menggunakan beberapa database, bukan hanya MySQL, kode Anda menjadi lebih portabel dan lebih mudah dibaca.

2. Menggunakan Prosedur Tersimpan

Berikutnya pada daftar metode kami untuk meningkatkan keamanan kode adalah prosedur tersimpan. Pengembang dapat mengoptimalkan kode mereka dengan menulis kode dalam bentuk prosedur yang disimpan untuk digunakan nanti. Prosedur pada dasarnya hanyalah unit logis dari kode dengan beberapa pernyataan yang dieksekusi satu demi satu.

Melalui metode ini, rencana eksekusi dapat dibuat. Selain itu, eksekusi pernyataan selanjutnya dalam suatu prosedur memastikan bahwa mereka secara otomatis diparametrikan. Prosedur tersimpan memungkinkan Anda untuk memanggilnya kapan pun Anda ingin menjalankan kueri daripada harus menulisnya berkali-kali.

Prosedur tersimpan mengoptimalkan kode seseorang dan meningkatkan keamanan dan efisiensi program secara keseluruhan. Mereka dianggap sebagai praktik pemrograman yang baik secara umum dan tidak hanya terbatas pada perlindungan terhadap serangan injeksi SQL.

3. Validasi Masukan

Validasi input berkisar pada verifikasi apakah input yang dimasukkan oleh pengguna itu sah atau tidak. Proses validasi memeriksa jenis input (bilangan bulat, karakter, string, dll.), format, panjang, dan banyak lagi.

Dengan cara ini, kueri yang dikirim ke server database diperiksa terlebih dahulu apakah memenuhi kriteria validasi atau tidak. Menggunakan validasi input, pengembang dapat memastikan bahwa tidak ada perintah yang dimasukkan ke dalam input. Teknik ini menghilangkan semua jenis penipuan, dan peretas tidak dapat mengeksploitasi celah yang mungkin melalui masukan mereka.

Selain form input seperti kolom username dan password, Anda juga harus memperhitungkan validasi input melalui data terstruktur (nama, pendapatan, umur, kode pos, respon survei). Selanjutnya, ketika pengguna menemukan kumpulan nilai yang tetap seperti daftar drop-down, input harus sama persis dengan pilihan yang ditawarkan.

4. Mencabut Hak Istimewa Admin

Menghubungkan aplikasi seseorang ke database dengan akses root hanya boleh dilakukan sebagai upaya terakhir. Misalnya, jika peretas telah mengambil kendali atas server Anda, inilah saatnya untuk membiarkan diri Anda mendapatkan hak administrator untuk menyingkirkannya. Selanjutnya, semakin besar jumlah aplikasi yang menggunakan server, semakin besar risiko penyusupan.

Ini adalah praktik terbaik untuk memilih opsi yang paling tidak diistimewakan untuk mencegah injeksi SQL. Oleh karena itu, Anda harus mengatur hak dan hak istimewa pengguna dengan tepat.

Kesimpulan

Pada artikel ini, kami mencoba menjelaskan serangan injeksi SQL dan konsekuensinya. Kami juga mencoba untuk mencakup empat tindakan pencegahan terpenting yang dapat Anda gunakan untuk melindungi diri Anda dan aplikasi Anda dari semua jenis kerentanan dan serangan. Langkah-langkah ini memastikan tidak hanya pencegahan injeksi SQL tetapi juga keamanan kode secara umum. Jadi, jadikan mereka bagian dari proses pengembangan Anda!


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Cara Mengubah Kolom atau Menghasilkan Alter Script dengan menggunakan GUI di SQL Server - Tutorial SQL Server / T-SQL Bagian 38

  2. Cara Memetakan Banyak Partisi ke Satu Filegroup di SQL Server (T-SQL)

  3. VMware CPU Hot Plug vNUMA Effects pada SQL Server

  4. Tidak dapat membuka basis data default pengguna. Gagal masuk. setelah menginstal SQL Server Management Studio Express

  5. SYSUTCDATETIME() Contoh di SQL Server (T-SQL)