MariaDB - Perlindungan Injeksi SQL

Tindakan sederhana menerima masukan pengguna membuka pintu untuk eksploitasi. Masalahnya terutama berasal dari manajemen data yang logis, tetapi untungnya, cukup mudah untuk menghindari kekurangan utama ini.

Peluang untuk injeksi SQL biasanya terjadi pada pengguna yang memasukkan data seperti nama, dan logika kode gagal menganalisis masukan ini. Kode, sebaliknya, memungkinkan penyerang untuk memasukkan pernyataan MariaDB, yang akan berjalan di database.

Selalu pertimbangkan data yang dimasukkan oleh pengguna, mencurigai dan membutuhkan validasi yang kuat sebelum pemrosesan apa pun. Lakukan validasi ini melalui pencocokan pola. Misalnya, jika input yang diharapkan adalah nama pengguna, batasi karakter yang dimasukkan ke karakter alfanumerik dan garis bawah, dan dengan panjang tertentu. Tinjau contoh yang diberikan di bawah ini -

if(check_match("/^\w{8,20}$/", $_GET['user_name'], $matches)) {
   $result = mysql_query("SELECT * FROM system_users WHERE user_name = $matches[0]");
} else {
   echo "Invalid username";
}

Juga, gunakan operator REGEXP dan klausa LIKE dalam membuat batasan input.

Pertimbangkan semua jenis kontrol eksplisit input yang diperlukan seperti -

  • Kontrol karakter pelarian yang digunakan.

  • Kontrol tipe data khusus yang sesuai untuk input. Batasi masukan ke jenis dan ukuran data yang diperlukan.

  • Kontrol sintaks data yang dimasukkan. Jangan biarkan apapun di luar pola yang dibutuhkan.

  • Kontrol persyaratan yang diizinkan. Daftar hitam kata kunci SQL.

Anda mungkin tidak mengetahui bahaya serangan injeksi, atau mungkin menganggapnya tidak signifikan, tetapi mereka berada di puncak daftar masalah keamanan. Selanjutnya, pertimbangkan efek dari dua entri ini -

1=1
-or-
*

Kode yang memungkinkan salah satu dari mereka untuk dimasukkan bersama dengan perintah yang benar dapat mengakibatkan mengungkapkan semua data pengguna di database atau menghapus semua data di database, dan tidak ada injeksi yang sangat pintar. Dalam beberapa kasus, penyerang bahkan tidak menghabiskan waktu untuk memeriksa lubang; mereka melakukan serangan buta dengan masukan sederhana.

Juga, pertimbangkan pencocokan pola dan alat ekspresi reguler yang disediakan oleh bahasa pemrograman / skrip apa pun yang dipasangkan dengan MariaDB, yang memberikan kontrol lebih, dan terkadang kontrol yang lebih baik.