Mengenal SQL Injection
Sebenarnya SQL injection sendiri bukanlah hal baru, dari dulu teknik ini sudah dikenal dalam dunia hacking sebagai salah satu teknik web hacking, namun baru muncul lagi sekarang karena sifatnya yang dapat merusak database dari suatu situs. Teknik yang digunakan dalam SQL Injection adalah dengan jalan menginput perintah- perintah standar dalam SQL (DDL, DML, DCL) seperti CREATE, INSERT, UPDATE, DROP, ALTER, UNION, SELECT dan perintah-perintah lainnya yang tak asing lagi bagi anda yang sudah mengenal SQL secara mendalam maupun yang baru saja belajar. Dari berbagai jenis SQL dari MySQL, PostgreSQL, Nuke SQL, dan MS-SQL, yang paling rentan terhadap SQL Injection adalah MS-SQL.
SQL Injection adalah suatu teknik injeksi kode yan
g mengeksploitasi kerentanan keamanan yang terjadi pada lapisan database. Kelemahan ini muncul ketika pengguna lolos menembus keamanan dari database tersebut. Contohnya, pembobolan lewat input box dan memasukkannya lewat alamat URL. Selain itu Teknik hacking SQL injection mulai mencuat kepermukaan semenjak dijebolnya situs KPU pada pemilu 2009 putaran pertama kemarin oleh Dani Firmansyah atau Xnuxer , dengan teknik ini beliau dapat masuk sebagai web administrator tanpa susah payah scan portport yang terbuka , tanpa terdeteksi oleh firewall dan tanpa tools ke situs tersebut yang konon systemnya seharga 152 milyar itu dengan keamanannya yang berlapis lapis.
Pengertian SQL Injection
- SQL injection adalah sebuah aksi hacking yang dilakukan di aplikasi client dengan cara memodifikasi perintah SQL yang ada di memori aplikasi client.
- SQL Injection merupakan teknik mengeksploitasi web aplikasi yang didalamnya menggunakan database untuk penyimpanan data.
- Tidak adanya penanganan terhadap karakter – karakter tanda petik satu ’ dan juga karakter double minus — yang menyebabkan suatu aplikasi dapat disisipi dengan perintah SQL.
- Sehingga seorang Hacker menyisipkan perintah SQL kedalam suatu parameter maupun suatu form.
- Teknik ini memungkinkan seseorang dapat login kedalam sistem tanpa harus memiliki account.
- Selain itu SQL injection juga memungkinkan seseorang merubah, menghapus, maupun menambahkan data–data yang berada didalam database.
- Bahkan yang lebih berbahaya lagi yaitu mematikan database itu sendiri, sehingga tidak bisa memberi layanan kepada web server.
1. Lindungi Query SQL
Untuk melindungi query SQL, kita harus menerapkan tehnik
sanitasi/mengosongkan seluruh input yang diterima dari request object
ASP seperti: Request, Request.QueryString, Request.Form,
Request.Cookies dan Request.ServerVariabbles. Teknik sanitasi ini
sangat tergantung pada Relational Database Management System. RDBMS
merupakan sistem yang multiuser. Oleh karena itu, RDBMS menyertakan
fitur sekuriti untuk mengontrol akses ke/dan penggunaan database. Tujuan
arsitektur sekuriti RDBMS adalah untuk melindungi dan memverifikasi
semua bagian informasi yang tersimpan dalam database. Informasi bisnis
perlu diverifikasi untuk memastikan bahwa tidak ada data yang berubah.
Contoh penanganan MS SQL Server seperti dibawah ini.
Dalam sebuah halaman login, script semestinya terdiri dari dua variabel (txtUserName, txtPassword) dari jenis string yang dilewati. Saat sebuah tanda petik tunggal (‘) dimasukkan dalam sebuah parameter, hal ini mengijinkan user untuk memanipulasi perintah yang dieksekusi. Untuk menghadapi ancaman SQL Injection, hindari penggunaan tanda petik tunggal (‘) dengan menggunakan fungsi REPLACE, seperti dibawah ini:
Contoh penanganan MS SQL Server seperti dibawah ini.
Dalam sebuah halaman login, script semestinya terdiri dari dua variabel (txtUserName, txtPassword) dari jenis string yang dilewati. Saat sebuah tanda petik tunggal (‘) dimasukkan dalam sebuah parameter, hal ini mengijinkan user untuk memanipulasi perintah yang dieksekusi. Untuk menghadapi ancaman SQL Injection, hindari penggunaan tanda petik tunggal (‘) dengan menggunakan fungsi REPLACE, seperti dibawah ini:
p_strUsername = Replace(Request.Form(“txtUsername”), “‘”, “””)
p_strPassword = Replace(Request.Form(“txtPassword”), “‘”, “””)
p_strPassword = Replace(Request.Form(“txtPassword”), “‘”, “””)
Contoh yang kedua, script diharapkan adalah sebuah variabel (ID)
jenis long integer. Perintah SQL yang tidak diotorisasi dapat
mengeksekusi dengan menambahkan perintah SQL ke dalam parameter ID.
Untuk mengatasi hal ini gunakan input untuk Long Integer dengan fungsi
CLng sbb:
p_lngID = CLng(Request(“ID”))
Jika user mencoba melewati suatu string, fungsi CLng akan menampilkan pesan error.
Tidak ada komentar:
Posting Komentar