Beranda
Artikel
Cyber Security
Teknologi
Contoh Serangan SQL Injection

img source: blogs.zeiss.com

SQL Injection adalah teknik serangan yang memanfaatkan celah keamanan dalam aplikasi berbasis database untuk menyisipkan atau "injeksi" perintah SQL berbahaya. Tujuannya adalah untuk mengakses atau memanipulasi data yang tidak seharusnya bisa diakses oleh penyerang. Serangan ini sering terjadi pada aplikasi web yang tidak menangani input dari pengguna dengan benar.

Contoh Serangan SQL Injection

  1. Mengambil Data Sensitif

    Salah satu contoh serangan SQL Injection adalah ketika penyerang mencoba mengakses data sensitif dari database. Misalnya, jika sebuah form login di sebuah situs web hanya memeriksa username dan password tanpa validasi yang memadai, penyerang dapat memasukkan input seperti berikut:

    ' OR '1'='1

    Dengan memasukkan input ini ke dalam form login, query SQL yang dihasilkan mungkin menjadi seperti:

    SELECT * FROM users WHERE username = '' OR '1'='1' AND password = '...'

    Karena '1'='1' selalu benar, query ini akan selalu mengembalikan data dari tabel users, sehingga penyerang bisa mendapatkan akses ke informasi yang tidak seharusnya mereka lihat.

  2. Mengubah Data dalam Database

    Dalam serangan ini, penyerang dapat memasukkan perintah SQL yang tidak hanya membaca data tetapi juga mengubahnya. Misalnya, jika ada form untuk mengupdate profil pengguna, penyerang dapat mengisi field input dengan data berikut:

    ', is_admin = TRUE WHERE username = 'admin' --

    Ini akan mengubah query SQL menjadi:

    UPDATE users SET email = '', is_admin = TRUE WHERE username = 'admin' --

    Dengan demikian, penyerang bisa mengubah status admin pengguna yang ada.

  3. Menghapus Data dari Database

    Penyerang juga bisa menggunakan SQL Injection untuk menghapus data dari database. Jika form input tanpa validasi yang baik menerima data untuk menghapus item, penyerang bisa memasukkan input berikut:

    '; DELETE FROM products; --

    Query SQL yang dihasilkan akan menghapus semua data dari tabel products, yang tentunya dapat menyebabkan kerusakan serius pada sistem.

Cara Menghindari Serangan SQL Injection

  1. Gunakan Prepared Statements

    Prepared Statements atau parameterized queries adalah cara efektif untuk melindungi aplikasi dari SQL Injection. Dengan menggunakan teknik ini, parameter input dipisahkan dari query SQL, sehingga mencegah eksekusi perintah SQL berbahaya.

    $stmt = $pdo->prepare('SELECT * FROM users WHERE username = :username AND password = :password');
    $stmt->execute(['username' => $username, 'password' => $password]);
  2. Validasi dan Sanitasi Input

    Pastikan untuk selalu memvalidasi dan menyaring semua input pengguna. Gunakan whitelist untuk nilai yang diperbolehkan dan hindari karakter-karakter khusus yang tidak diperlukan.

  3. Gunakan ORM (Object-Relational Mapping)

    ORM seringkali menyediakan lapisan abstraksi yang dapat membantu mencegah SQL Injection dengan secara otomatis menghindari perintah SQL yang raw.

  4. Terapkan Prinsip Least Privilege

    Berikan hak akses minimal yang diperlukan oleh aplikasi untuk berfungsi. Dengan cara ini, jika terjadi serangan SQL Injection, kerusakan yang ditimbulkan dapat diminimalkan.

Referensi

  1. OWASP Foundation. (2023). SQL Injection. OWASP SQL Injection
  2. Acunetix. (2023). SQL Injection Attack Examples. Acunetix SQL Injection
  3. Microsoft. (2023). SQL Injection Overview. Microsoft SQL Injection

Penulis blog

TUKANG KETIK
TUKANG KETIK
Programming is 10% writing code, and 90% understanding why it's not working. Coding is trial & error.

Tidak ada komentar

Tolong Ketikannya di jaga dan gunakan bahasa yang sopan. Terima kasih
Atau Boleh request juga artikel apa yang ingin saya bahas ditulisan saya (tapi ini kalau saya bisa dan waktunya ada) maklum saya juga kerja.