SQL injection is a code injection technique that exploits a security vulnerability occurring in the database layer of an application. The vulnerability is present when user input is either incorrectly filtered for string literal escape characters embedded in SQL statements or user input is not strongly typed and thereby unexpectedly executed ~ http://en.wikipedia.org
Sekilas tentang SQL Injection
Setelah banyaknya bug-bug yang bertebaran di internet dari unicode hingga yang baru-baru ini menggemparkan jagad maya yaitu RPC Dcom, sekarang muncul lagi satu lubang keamanan yang membahayakan sebuah websites. SQL Injection atau dikenal juga dengan SQL insertion adalah sebuah teknik yang digunakan untuk mengeksploitasi database pada suatu websites dengan memaksa keluarnya error page situs itu yang ada error pages itu terdapat info tentang struktur database website yang dieksploitasi. SQL sendiri merupakan bahasa pemrograman database yang sering dipakai para web developer maupun admin sebuah situs untuk menampung ataupun menaruh data-data baru dari suatu input yang masuk seperti input member login, search engine, dan lain sebagainya.
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 yang 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.
Sebab terjadinya SQL Injection
- 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.
Bug SQL Injection berbahaya ?
- 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.
Cara mengatasi/melindungi database dari SQL Injection
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:
p_strPassword = Replace(Request.Form(“txtPassword”), “‘”, “””)
Dim objFSO ‘sebagai Scripting.FileSystemObject
Dim objStream ‘sebagai Scripting.TextStream
if Err.Number = 0 Then Exit Sub
WriteLine “<p><font color=#FF0000><b>”_
& “ERROR.”_
& “Please try again later or contact webmaster.</b></font></p>”
Set objFSO = Server.CreateObject(“Scripting.FileSystemObject”)
Set objStream = objFSO.OpenTextFile(“C:\errorlog.txt”,_
ForAppending, True)
ObjStream.WriteLine Now() & “: [” & Request(“SCRIPT_NAME”)_
& ” – Err #” & Err.Number & “]” _
& Err.description & “[Lokasi: ” & strLocation & “]”
ObjStream.Close
Set objStream = Nothing
Set objFSO = Nothing
Response.End
End Sub
batasi permisi hanya pada user yang terotorisasi saja. Sang user tentu saja harus yakin bahwa data yang dia terima sudah akurat dan tidak ceroboh memodifikasinya.
[…] https://wahyualamsyah.wordpress.com/2011/01/05/sql-injection-dan-bagaimana-cara-mengatasi/ […]
bang..
kalo mau ngaganti halaman pas di kasih tanda ‘ dibelakang gimana?
biar gk ada tulisan
You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near ‘\” at line 1
tulisan yang itu mau diganti jadi..
halaman html not found..
misal..
http://ferdhika.com/include/image.php?id=26
pas diketik
http://ferdhika.com/include/image.php?id=26‘
muncul
You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near ‘\” at line 1
nah kalo mau di ganti pake halaman html bisa gk?
kaya forum http://forum.balikita.net/viewtopic.php?id=5616‘
mohon pencerahannya 🙂
Sering kali content atau koment2 masuk sembarangan pada web kita, itu termasuk inject sql bukan…? Cara mengatasinya bgmn? Trims sharingnya
bang, kalo dr php nya gmn cra nglindunginy??
Thx atas infonya….
Saya mo menanyakan sesuatu. Saya memiliki Server Database dengan SQL SERVER 2000 dan menggunakan OS Windows Server 2000. Server ini sudah berjalan lebih dari 2 tahun. Beberapa waktu yang lalu ketika client membuka data 2 bulan terakhir, data tidak muncul.sedangkan data yang lebih lama bisa dimunculkan/terbaca oleh server.Kira2 apa penyebabnya dan bagaimana cara mengatasinya? Mohon bantuannya, terimakasih…