Apa itu SQL Injection?

SQL Injection adalah serangan keamanan pada aplikasi web yang memanfaatkan celah keamanan dalam input yang diterima oleh aplikasi untuk menyisipkan dan menjalankan perintah SQL berbahaya pada database yang mendasarinya. Dengan menggunakan teknik SQL Injection, penyerang dapat mengeksekusi perintah SQL yang tidak sah atau merusak, seperti memanipulasi, menghapus, atau mencuri data dari database.

A SQL injection attack. | Download Scientific Diagram

Contoh SQL Injection

Misalkan sebuah aplikasi web memiliki formulir login dengan kode SQL berikut:

SELECT * FROM users WHERE username = '$_POST[username]' AND password = '$_POST[password]'

Seorang penyerang dapat mencoba memasukkan input berbahaya seperti ini pada bidang username:

' OR '1'='1

Dengan memasukkan string ini, pernyataan SQL yang sebenarnya akan menjadi:

SELECT * FROM users WHERE username = '' OR '1'='1' AND password = '$_POST[password]'

Karena ‘1’=’1′ selalu benar, maka kondisi WHERE menjadi benar untuk setiap baris dalam tabel pengguna, yang mengakibatkan aplikasi memberikan akses ke akun pertama yang ditemukan dalam database, mengabaikan kebutuhan untuk memasukkan kata sandi yang benar.

Cara Mencegah SQL Injection

  1. Penggunaan Parameterized Statements atau Prepared Statements: Gunakan parameterized statements atau prepared statements untuk memisahkan perintah SQL dari data input. Ini memastikan bahwa data input dianggap sebagai nilai, bukan bagian dari perintah SQL, sehingga mencegah serangan SQL Injection. Contoh menggunakan parameterized statements dalam PHP:

    $stmt = $pdo->prepare('SELECT * FROM users WHERE username = :username AND password = :password'); $stmt->execute(['username' => $username, 'password' => $password]);
  2. Validasi Input: Validasi input dari pengguna sebelum mengirimkannya ke database dapat membantu mencegah serangan SQL Injection. Pastikan bahwa input hanya mengandung karakter yang diharapkan dan memfilter atau menolak input yang mencurigakan.
  3. Penerapan Prinsip Kecukupan Hak Akses: Berikan hak akses minimum yang diperlukan oleh aplikasi terhadap database. Ini akan membatasi kemampuan penyerang untuk menjalankan perintah SQL berbahaya bahkan jika berhasil menyusup.
  4. Menggunakan Pembatasan Karakter Khusus: Batasi penggunaan karakter khusus dalam input yang diterima oleh aplikasi. Jangan izinkan karakter yang digunakan dalam sintaks SQL seperti tanda kutip tunggal (‘), tanda kutip ganda (“), dan karakter spesial lainnya.
  5. Pembaruan dan Pemantauan Keamanan Aplikasi: Selalu perbarui aplikasi web Anda dan perangkat lunak database Anda secara teratur untuk memastikan bahwa kerentanan yang diketahui telah diperbaiki. Selain itu, lakukan pemantauan keamanan secara berkala dan uji aplikasi Anda secara teratur untuk mencari celah keamanan yang baru muncul.

Menerapkan praktik-praktik ini akan membantu melindungi aplikasi web Anda dari serangan SQL Injection yang merugikan.

 29 total views,  1 views today