ACT Blog

logo bendera indonesia
Database Networking Security Teknologi Ahmad Rudiansyah  

6 Tips Pakar tentang Mitigasi & Pencegahan Injeksi SQL

ACT Communications – Injeksi SQL (SQLi) adalah salah satu ancaman keamanan aplikasi web modern yang paling serius. Ini memungkinkan pengguna jahat untuk menyuntikkan kode jahat ke dalam database untuk mendapatkan akses ke informasi rahasia, memodifikasi atau menghapus data, atau bahkan mengendalikan seluruh sistem. Oleh karena itu, pengetahuan dan kesadaran tentang cara kerja serangan SQLi dan cara pencegahannya sangat penting untuk mengamankan aplikasi web modern apa pun.

Apa Itu Serangan Injeksi SQL?

Serangan injeksi SQL adalah injeksi kode berbahaya yang mengeksploitasi kerentanan aplikasi. Jika berhasil, serangan ini dapat memungkinkan penjahat dunia maya untuk:

  • Akses data sensitif
  • Melakukan tugas admin pada database
  • Mengubah informasi basis data
  • Pulihkan file dari sistem

Dalam beberapa kasus, penyerang bahkan dapat mengeluarkan perintah ke sistem operasi basis data yang mendasarinya. Administrator basis data harus menyadari ancaman ini dan mengambil langkah proaktif untuk mengamankan aplikasi mereka dari serangan tersebut.

Bagaimana cara kerja serangan SQLi?

Serangan SQLi bekerja dengan menyuntikkan kode berbahaya ke kueri Structured Query Language (SQL) aplikasi. Serangan semacam itu dimungkinkan ketika situs web atau aplikasi web tidak memvalidasi input pengguna dengan benar sebelum server memprosesnya. Dengan mengeksploitasi kerentanan tertentu dalam aplikasi, penyerang dapat memperoleh akses untuk mengamankan bagian database atau memodifikasi data yang ada.

Dampak serangan SQLi

Serangan SQLi yang berhasil dapat berdampak parah pada organisasi dari semua ukuran. Penyerang mungkin dapat mencuri kredensial dan mengakses database yang berisi informasi sensitif pelanggan seperti nomor kartu kredit, nomor Jaminan Sosial, atau data pribadi lainnya. Mereka mungkin juga dapat mengubah atau menghapus data yang ada untuk mengganggu layanan atau memanipulasi catatan untuk keuntungan finansial. Selain itu, penyerang dapat menggunakan serangan ini sebagai bagian dari kampanye yang lebih ekstensif untuk pergerakan lateral dalam jaringan.

6 Tips Pakar Untuk Mitigasi SQLi

Proyek Keamanan Aplikasi Web Terbuka (OWASP) memiliki tip terbaik untuk SQLi dalam Lembar Cheat Pencegahan Injeksi SQL. Pertahanan primer dan sekunder yang mereka identifikasi—termasuk penggunaan pernyataan yang disiapkan dan prosedur tersimpan, dan melakukan validasi input daftar yang diizinkan—dirangkum di bawah ini.

Pertahanan utama 1: Penggunaan pernyataan yang disiapkan (dengan kueri berparameter)

Penggunaan pernyataan yang disiapkan dengan pengikatan variabel (juga dikenal sebagai kueri berparameter) harus menjadi garis pertahanan pertama untuk mengurangi injeksi SQL. Gaya pengkodean seperti itu memungkinkan pengembang menentukan semua kode SQL pada awalnya dan kemudian meneruskan setiap parameter ke kueri nanti, sehingga memungkinkan database untuk membedakan antara kode dan data, apa pun masukan pengguna yang digunakan.

Manfaat dari pernyataan yang disiapkan adalah bahwa mereka mencegah penyerang mengubah maksud kueri bahkan jika mereka memasukkan perintah SQL yang berbahaya. Selain itu, struktur penulisan kueri yang lebih mudah membuatnya lebih sederhana bagi pengembang daripada kueri dinamis.

Baca Juga :  Firewall Stateful vs Stateless: Apa Bedanya?

Pertahanan utama 2: Penggunaan prosedur tersimpan yang dibangun dengan benar

Prosedur tersimpan adalah potongan kode SQL yang disimpan dan dijalankan di database, yang mengurangi kebutuhan untuk menyematkan kode SQL di lapisan aplikasi. Prosedur tersimpan juga dapat diatur untuk menerima input pengguna, mengurangi beban memvalidasi input pengguna dalam aplikasi.

Menggunakan prosedur tersimpan yang dibangun dengan benar penting untuk diingat saat mengurangi risiko SQLi. Meskipun benar bahwa tidak semua prosedur tersimpan kebal terhadap eksploitasi, memanfaatkan pemrograman prosedur tersimpan standar, konstruksi yang secara otomatis membuat parameter pernyataan SQL apa pun, bisa sangat efektif dalam melindungi dari serangan potensial.

Menggunakan pernyataan yang disiapkan dan prosedur tersimpan pada akhirnya mengarah pada hasil yang sama—perlindungan yang berhasil dari upaya SQLi yang eksploitatif—selama pengembang mengambil tindakan untuk memastikan konstruksi dan eksekusi yang baik.

Pertahanan utama 3: Izinkan validasi masukan

Banyak bagian kueri SQL tidak dimaksudkan untuk menggunakan variabel pengikat, seperti nama tabel atau kolom, dan indikator urutan urutan, seperti urutan naik (ASC) atau urutan menurun (DESC). Dalam kasus ini, pendekatan terbaik adalah memvalidasi masukan terhadap daftar yang diizinkan.

Jika nilai parameter pengguna digunakan untuk menentukan nama tabel dan nama kolom, maka parameter ini harus direferensi silang dengan nilai yang diharapkan atau legal untuk memastikan tidak ada input pengguna yang tidak divalidasi dalam kueri.

Validasi input daftar yang diizinkan dapat sangat membantu dalam mencegah pelanggaran keamanan karena input yang berbahaya; namun, jika memungkinkan, disarankan untuk mempertimbangkan menulis ulang kode sama sekali, karena ini bisa menjadi gejala desain pengkodean yang buruk.

Pertahanan utama 4: Melarikan diri dari semua input yang disediakan pengguna

Melarikan diri dari semua input yang disediakan pengguna adalah teknik yang harus digunakan sebagai upaya terakhir ketika tiga pertahanan pertama di atas tidak memungkinkan. Melarikan diri dari masukan pengguna sebelum memasukkannya ke dalam kueri, meskipun efektif, sering kali implementasinya khusus untuk basis data dan harus diterapkan dengan hati-hati karena tidak dapat dijamin akan melindungi dari semua jenis injeksi SQL dalam semua situasi. Melarikan diri dari input pengguna biasanya direkomendasikan untuk kode lawas saat mengimplementasikan validasi input tidak hemat biaya.

Pertahanan tambahan 5: Menegakkan hak istimewa paling sedikit

Untuk memastikan keamanan lingkungan data, administrator harus meminimalkan hak istimewa yang diberikan ke setiap akun database. Mungkin nyaman untuk memberikan akses administrator basis data pengguna aplikasi (DBA) atau hak tipe admin, tetapi praktik ini kemungkinan akan menciptakan titik lemah dalam jaringan.

Untuk memastikan semua hak akses cocok dan aman, disarankan agar administrator memulai dari dasar dan mencari tahu akses apa yang diperlukan daripada mencoba membatasi hak istimewa yang ada. Setiap akun hanya boleh memiliki akses baca untuk tabel tertentu, jika perlu. Ini membantu mencegah pemaparan data yang tidak perlu jika terjadi upaya serangan.

Baca Juga :  Apa itu Routing Jaringan? Definisi, Langkah, dan Jenis

Alih-alih memberikan akses ke seluruh tabel, jika akun hanya membutuhkan bagian tertentu, lebih baik membuat tampilan yang membatasi aksesnya dan memberikan hak istimewa untuk tampilan khusus ini. Untuk memastikan keamanan data, disarankan untuk tidak memberikan akses ke akun apa pun dengan kemampuan “buat” atau “hapus” jika memungkinkan.

Untuk memastikan database yang aman, departemen TI harus mengembangkan kebijakan yang memerlukan prosedur penyimpanan sambil membatasi akun aplikasi agar tidak mengeksekusi kueri secara langsung. Selain itu, akun yang dibatasi ini hanya boleh menjalankan prosedur tersimpan yang diperlukan dan tidak boleh diberikan akses ke tabel mana pun di database.

Dengan SQLi, penyerang dapat memanipulasi nilai parameter yang diotorisasi dan mendapatkan akses ke informasi yang sebelumnya tidak dapat mereka lakukan, tetapi aplikasi itu sendiri mungkin diizinkan mengaksesnya. Oleh karena itu, mengurangi hak istimewa yang diberikan ke aplikasi Anda dapat secara signifikan mengurangi risiko upaya akses yang tidak disetujui.

Pertahanan tambahan 6: Melakukan validasi input daftar yang diizinkan sebagai pertahanan sekunder

Melakukan validasi input daftar yang diizinkan mencegah penyebaran serangan dan berfungsi sebagai lapisan keamanan tambahan bagi mereka yang menggunakan database SQL secara rutin. Ketika diimplementasikan sebagai pertahanan sekunder, itu harus dapat mendeteksi dan mencegah injeksi input yang tidak sah sebelum diteruskan ke kueri SQL.

Validasi input sangat penting untuk memastikan bahwa hanya data yang valid yang masuk ke alur kerja dan ada kemungkinan malfungsi minimal karena data cacat tetap ada di database. Jenis pertahanan sebaiknya dilakukan sesegera mungkin ketika data diterima dari sumber eksternal. Tingkat sintaksis dan semantik harus dinilai untuk akurasi lebih lanjut.

Contoh Injeksi SQL

Untuk memahami bagaimana serangan SQLi dapat terjadi, ada baiknya meninjau contoh. Pertimbangkan skenario ini.

Penyerang mencoba untuk mendapatkan akses tidak sah ke database yang digunakan oleh toko online. Mereka membuat input berbahaya yang disuntikkan ke dalam kueri SQL yang tidak terlindungi, memungkinkan penyerang mengekstrak informasi rahasia yang disimpan dalam database dan memodifikasinya sesuka mereka.

Misalnya, kueri SQL terlihat seperti ini:

SELECT * FROM users WHERE username = ‘$username’ AND password = ‘$password.’

Penyerang akan membuat masukan berbahaya seperti ini:

Nama pengguna: 1′ atau ‘1’ = ‘1

Kata sandi: 1′ atau ‘1’ = ‘1

Kueri SQL yang dimodifikasi ini sekarang akan terlihat seperti ini:

SELECT * FROM Users WHERE Username=’1′ OR ‘1’ = ‘1’ AND Password=’1′ OR ‘1’ = ‘1’

Baca Juga :  Apa itu Firewall Jaringan

Peretas telah secara efektif menyuntikkan kondisi OR ke dalam proses otentikasi. Lebih buruk lagi, kondisi ‘1’ = ‘1’ selalu benar, sehingga query SQL ini akan selalu mengakibatkan proses autentikasi dilewati.

Permintaan SQL yang dimodifikasi ini akan mengembalikan semua catatan dari tabel ‘Pengguna’, terlepas dari apakah nama pengguna dan kata sandi yang valid telah diberikan. Ini adalah salah satu metode paling umum yang dapat digunakan penyerang untuk mendapatkan akses tidak sah ke informasi sensitif.

Menggunakan karakter seperti “;” untuk menambahkan kueri lain ke akhir kueri yang sudah ada dan “–” untuk memberi komentar dan karena itu memotong sebagian kueri yang ada, peretas berpotensi menghapus seluruh tabel atau mengubah data yang dikandungnya. Mereka bahkan dapat mengeluarkan perintah ke sistem operasi yang mendasarinya, dengan demikian mengambil alih mesin dan menggunakannya sebagai pos pementasan untuk menyerang seluruh jaringan.

Apa Sasaran Serangan Injeksi SQL?

Ada empat tujuan utama serangan SQLi: mengkompromikan kerahasiaan data serta integritas data, mencuri data, dan akhirnya mengkompromikan seluruh jaringan.

  • Kompromi kerahasiaan data: Penyerang dapat menggunakan serangan SQLi untuk mengakses data rahasia yang disimpan dalam database, seperti informasi kartu kredit dan kata sandi.
  • Kompromi integritas data: Seorang hacker dapat memanipulasi atau menghapus data yang disimpan dalam database tanpa otorisasi. Hal ini dapat menyebabkan pencurian informasi sensitif atau bahkan serangan denial-of-service (DDos) terdistribusi pada sistem yang mengandalkan integritas data database.
  • Mencuri data: Pencurian data adalah salah satu tujuan paling umum dari serangan SQLi. Penyerang dapat menggunakan jenis serangan ini untuk mencuri kredensial login dan informasi sensitif lainnya dari database.
  • Kompromi seluruh jaringan: Serangan SQLi dapat memberi peretas akses ke bagian lain jaringan dengan menggunakan basis data yang dibajak sebagai pos pementasan. Penyerang kemudian dapat meluncurkan serangan lebih lanjut pada sistem atau jaringan lain yang terhubung ke jaringan.

Intinya: Melindungi Jaringan Dari Serangan Injeksi SQL

Injeksi SQL adalah salah satu ancaman keamanan aplikasi web yang paling umum dan dapat menimbulkan konsekuensi parah jika tidak ditangani. Untuk melindungi dari serangan ini, organisasi harus menerapkan validasi input dan kueri berparameter sebagai bagian dari strategi keamanan mereka secara keseluruhan.

Selain itu, sangat penting untuk memastikan semua database dikonfigurasi dengan benar dan diperbarui secara teratur dengan tambalan terbaru. Dengan menerapkan strategi mitigasi SQLi yang efektif, organisasi dapat secara signifikan mengurangi risiko disusupi oleh serangan.

Cara terbaik untuk melindungi organisasi Anda adalah dengan yang kuat firewall generasi berikutnya. Untuk bantuan pakar tentang keamanan jaringan, hubungi marketing kami untuk berkonsultasi solusi tepat untuk bisnis anda.

Open chat
Tim Marketing
Halo, silahkan jelaskan kebutuhan anda agar kami dapat memberikan penawaran terbaik!