Injeksi
SQL telah menjadi pilihan populer bagi hacker, digunakan dalam serangan
terhadap Sony Pictures, PBS, Microsoft, Yahoo, LinkedIn, dan CIA.
SQL,
atau Structured Query Language, adalah bahasa perintah dan kontrol untuk basis
data relasional seperti Microsoft SQL Server, Oracle dan MySQL. Dalam
pengembangan web modern, database ini sering digunakan di bagian belakang
aplikasi web dan sistem pengelolaan konten - yang berarti bahwa konten dan
perilaku banyak situs web dibangun di atas data dalam server basis data.
Sebuah
serangan yang berhasil pada database akan memberikan berbagai kemampuan akses sebuah situs web atau aplikasi web kepada hacker, mulai dari memodifikasi konten situs
web ("defacing"), atau untuk mengambil informasi sensitif seperti akun
kredensial atau data bisnis internal.
Sebuah
“kabar buruk” bagi pemilik situs web atau aplikasi web-base.
Cara Mencegah Serangan
SQL Injection
Kabar
baiknya adalah bahwa sebenarnya ada banyak cara yang bisa dilakukan pemilik
situs web untuk mencegah injeksi SQL. Meskipun tidak ada jaminan 100 persen
dalam keamanan jaringan, paling tidak hambatan berat dapat ditempatkan di jalur
upaya injeksi SQL.
1. Mempekerjakan
sanitasi data yang komprehensif.
Situs web harus memfilter semua masukan pengguna. Idealnya, data pengguna harus
disaring untuk konteks. Misalnya, alamat email harus difilter agar hanya
mengizinkan karakter yang diperbolehkan dalam alamat e-mail, nomor telepon
harus difilter agar hanya mengizinkan karakter yang diperbolehkan dalam nomor
telepon, dan seterusnya.
2. Gunakan firewall
aplikasi web.
Contoh yang populer adalah modul modSecurity open source yang tersedia untuk
server web Apache, Microsoft IIS, dan nginx. ModSecurity menyediakan
seperangkat peraturan yang canggih dan selalu berkembang untuk menyaring
permintaan web yang berpotensi berbahaya. Pertahanan injeksi SQL-nya dapat
menangkap sebagian besar upaya menyelinap SQL melalui saluran web.
3. Batasi hak istimewa
database menurut konteks.
Buat beberapa akun pengguna basis data dengan tingkat hak istimewa minimum
untuk lingkungan penggunaannya. Misalnya, kode di balik halaman login harus
query database menggunakan account terbatas hanya untuk tabel kredensial yang
relevan. Dengan cara ini, pelanggaran melalui saluran ini tidak dapat
dimanfaatkan untuk kompromi keseluruhan database.
4. Hindari membangun
query SQL dengan input pengguna.
Bahkan rutinitas sanitasi data bisa saja cacat. Idealnya, dengan menggunakan
variabel SQL yang mengikat dengan pernyataan siap atau prosedur yang tersimpan
jauh lebih aman daripada membuat kueri penuh.
5. Hilangkan kemampuan
database yang tidak perlu,
terutama yang meningkatkan hak istimewa database dan perintah yang menelurkan “shell”.
6. Terapkan secara
teratur patch perangkat lunak.
Karena kerentanan injeksi SQL secara teratur diidentifikasi dalam perangkat
lunak komersial, penting untuk selalu mengikuti perkembangan patch.
7. Tekan pesan
kesalahan. Pesan
ini merupakan alat pengintai penting bagi penyerang, jadi jagalah agar tetap
lokal jika memungkinkan. Jika pesan eksternal diperlukan, jaga agar tetap
generik.
8. Terus memantau
pernyataan SQL dari aplikasi yang terhubung dengan database. Ini akan membantu mengidentifikasi
pernyataan SQL jahat dan kerentanan. Alat pemantau yang memanfaatkan
pembelajaran mesin dan / atau analisis perilaku dapat sangat berguna.
Salah satu dari pertahanan ini
secara signifikan mengurangi kemungkinan serangan injeksi SQL yang berhasil.
Menerapkan semuanya akan memberikan tingkat tinggi pencegahan injeksi SQL. Meskipun
penggunaannya meluas, situs Anda tidak harus menjadi korban injeksi SQL
berikutnya.
Bener-bener ilmu baru buat saya. Walau pun banyak yang belum saya paham. Tetapi, paling tidak saya pernah baca dan sedikit tahu. Terima kasih
ReplyDeleteSama2. Paling tidak bisa membuat kita waspada.
Delete