Sabtu, 13 Juni 2009

SQL-Ijection

SQL INJECTION

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. Namun tidak semua web aplikasi bisa di inject dengan SQL injection ini karena tingkat keamanan dari setiap web berbeda-beda.

Karena SQL injection merupakan aksi berbahaya(merusak) ada baiknya tidak di praktikan pada web orang lain. Namun jika anda penasaran ingin mencobanya usahakan setelah beraksi langsung beri tau admin dari web tersebut karena anda telah merusaknya,jika anda beruntung tidak akan terjadi apa2. Namun jika tidak bersiap2 lah anda akan kedatangan “tamu tak di undang”.

Penyebab terjadinya SQL Injection

1) Tidak adanya penanganan terhadap karakter – karakter tanda petik satu ’ dan juga karakter double minus -- yang menyebabkan suatu aplikasi dapat disisipi dengan perintah SQL.

2) Sehingga seorang Hacker menyisipkan perintah SQL kedalam suatu parameter maupun suatu form.

Alasan SQL Injection berbahaya

1) Teknik ini memungkinkan seseorang dapat login kedalam sistem tanpa harus memiliki account.

2) Selain itu SQL injection juga memungkinkan seseorang merubah, menghapus, maupun menambahkan data–data yang berada didalam database.

3) Bahkan yang lebih berbahaya lagi yaitu mematikan database itu sendiri, sehingga tidak bisa memberi layanan kepada web server.

Contoh sintak SQL dalam PHP

1) $SQL = “select * from login where username =’$username’ and password = ‘$password’”; , {dari GET atau POST variable }

2) isikan password dengan string ’ or ’’ = ’

3) hasilnya maka SQL akan seperti ini = “select * from login where username = ’$username’ and password=’pass’ or ‘=′”; , { dengan SQL ini hasil selection akan selalu TRUE }

maka kita bisa inject sintax SQL (dalam hal ini OR) kedalam SQL

Cara-Cara SQL injection


Umumnya SQL Injection dapat di lakukan pada sebuah aplikasi web yg ada halaman loginnya

yang terdiri dari dua buah text box. SQL Injection tidak dapat di lakukan di aplikasi desktop menggunakan dataset otomatis. Selain itu penyerang harus memahami syntax – syntax yang berada di dalam SQL. SQL injection terjadi ketika penyerang dapat memasukkan beberapa SQL statement ke 'query' dengan cara manipulasi data input ke applikasi tersebut atau juga penyerang dapat memasukkannya melewati URL. Teknik ini dapat di lakukan karena lemahnya logika koding yang telah di buat dalam sebuah aplikasi. Namun, sebelum penyerang dapat melakukan teknik ini, terlebih dahulu penyerang harus mengetahui terlebih dahulu nama – nama fieldnya dengan cara menambahkan koding sederhana berikut dalam input text login.


‘ or 1=1–

Cara pencegahan SQL INJECTION

1) Batasi panjang input box (jika memungkinkan), dengan
cara membatasinya di kode program, jadi si cracker pemula akan bingung sejenak melihat input box nya gak bisa diinject dengan perintah yang panjang.

2) Filter input yang dimasukkan oleh user, terutama penggunaan tanda kutip tunggal (Input Validation).

3) Matikan atau sembunyikan pesan-pesan error yang keluar dari SQL Server yang berjalan.

4) Matikan fasilitas-fasilitas standar seperti Stored Procedures, Extended Stored Procedures jika memungkinkan.

5) Ubah "Startup and run SQL Server" menggunakan low privilege user di SQL Server Security tab.