Pages

Banner 468

Jumat, 14 November 2008

Mengurangi Kelemahan SQL (Sql Injection)

 
Kali ini kami akan memberitahukan rekan-rekan, khusunya yang baru belajar pemograman yang ada sangkut-
pautnya dengan penggunaan database dan Query.

Penggunaan query sangatlah memudahkan para programmer untuk menampilkan informasi apapun, disertai
dengan berbagai macam kriteria didalamnya guna menunjang kebutuhan. Tapi hal ini tidak dapat berlangsung
lama, dikarenakan beberapa waktu lalu penggunaan query sempat digunakan para hacker maupun cracker
untuk masuk ke dalam sebuah system. Kenapa bisa demikian?

Pasti anda ingat! setiap kali kita menuliskan sebuah kriteria pada baris perintah SQL selalu ditambahkan
tanda kutip ('), sebagai contoh:

SELECT Users.Login, Users.Password From Users Where (Users.Login='eko') And (Users.Password='123')

Kalo anda perhatikan perintah diatas, biasanya script tsb digunakan untuk memeriksa nama login dan
password pada tabel. jika tersedia maka kita dapat masuk ke sebuah aplikasi ataupun situs.
Bagaimana kalo kita bukan member dan ingin masuk ke sebuah system?

Sebelum masalah ini ditemukan dan dibahas oleh para pakar, Untuk masuk kesebuah system walupun
bukan user ataupun member, kita dapat memanfaatkan kelemahan system dengan cara memasukan beberapa
perintah SQL kedalam aplikasi tsb atau istilah kerennya sering disebut SQL Injection.
SQL Injection ini sering digunakan pada salah satu system yang menggunakan database, seperti
Ms.SQL, Oracle, Ms.Access dlll.

sebagai contoh biasanya untuk masuk ke sebuah situs tertentu, kita sering diminta memasukan nama user
dan password.

varlogin = "eko"
varPwd = "123"

sql= "SELECT Users.Login, Users.Password From Users Where (Users.Login='" & varlogin & "') And " & _
(Users.Password='" & varPwd & "')"

Kalo baris perintah diatas dieksekusi maka akan berjalan normal dan apabila user dan passwordnya
tersedia maka dapat masuk ke sistem. Dan akan ditolak apabila salah.
Beda halnya dengan script berikut:

varlogin = "eko' OR 'A'='A"
varPwd = "123' OR 'B'='B"

sql= "SELECT Users.Login, Users.Password From Users Where (Users.Login='" & varlogin & "') And " & _
(Users.Password='" & varPwd & "')"

Jika di eksekusi script tersebut maka kita dapat masuk ke sebuah system, walaupun user dan password
yang kita masukan salah. Kenapa bisa demikian? coba lihat nama login dan password yang dimasukan:
==> eko' OR 'A'='A
==> 123' OR 'B'='B

kalo kita gabungkan dengan script yang dibuat maka akan menjadi:
SELECT Users.Login, Users.Password From Users Where (Users.Login='eko' OR 'A'='A') And
(Users.Password='123' OR 'B'='B')

Karena telah ditambahkan script SQL melalui inputan maka kita dapat masuk kapanpun pada system
tersebut. Masih banyak script yang dapat dikombinasikan seperti UNION, HAVING dll...

Untuk menghindari kejadian diatas kita harus membuat fungsi untuk mengindari SQL Injection tersebut
salah satu contoh fungsi tersebut ialah:

Function AllowChar(SQLStr As String) As String
Dim I As Integer, splitStr,NotAllowCharSet as string
NotAllowCharSet= " ' UNION SELECT ; -- | OR AND "
splitStr = Split(NotAllowCharSet, " ")
For I = 0 To UBound(splitStr)
If splitStr(I) = "'" Then
SQLStr = Replace(SQLStr, splitStr(I), "`")
Else
SQLStr = Replace(SQLStr, splitStr(I), "")
End If
Next I
AllowChar = SQLStr
End Function

Anda bisa mengembangkan fungsi diatas sesuai kebutuhan.
Semoga dapat menambah pengetahuan rekan-rekan, khususnya bagi yang baru belajar visual basic

Salam,....