Secure Your Assets == Personal Indentifier Number

Pada suatu dialog interaktif yang diselenggarakanoleh radio network di Jakarta, yang membahas isu terhangat terkait dengan pembobolan uang nasabah via ATM (auto teller machine). Menghadirkan para pakar yang berkompeten, yaitu dari pihak bank dan juga dari vendor mesin ATM itu sendiri. Dialog diselenggarakan pada tgl 25 Jan 2010 dari pukul 07.00 – 09.00. Dalam salah satu dialog itu, ada salah satu panelis yang menyarankan untuk secara rutin mengganti PIN (personal indentifier number) agar dapat lebih aman. Di tengah pembicaraan, ada suatu pertanyaan, “…bagaimana jika kita sering ganti PIN, sehingga secara tidak sengaja PIN kita sama dengan PIN nasabah lain?..” begitu kira-kira pertanyaannya. “…apakah PIN yang sama tidak terjadi masalah.” Begitu lanjutan pertanyaan dari moderator.

Dari beberapa panelis, dengan segala hormat, pada awal-awal menjawab kurang ada keyakinan yang mendalam…cenderung dengan gaya-gaya diplomatis, yang hanya menyarankan, agar tidak sering-sering mengganti PIN.

Tergerak untuk sekedar sharing pengetahuan,.disela-sela breaking iklan,..saya mengirim SMS yang isinya:
“Meski PIN sama tapi tiap kartu ATM pasti beda username ato ID yg unik tiap2 kartu, shg krn validasi data harus dg username dan PIN,mk ga masalah,.jk ad yg sama PIN nya.”




Sesaat breaking iklan berakhir, kembali radio menyiarkan dialog tersebut…dan SMS saya dibaca pertama kali, kemudian diikuti beberapa SMS yang senada dan diakhiri dengan suatu testimoni SMS seorang ibu yang menyatakan PIN beliau sama persis dengan PIN ATM lain milik suaminya dan tidak terjadi masalah.
………….

Dalam kaitan ini, meski kartu ATM kita digandakan 1000 kali, asal kita benar-benar menjaga nomor PIN kita maka insyALLAH, akan kesulitan pihak pembobol ATM untuk trial error kombinasi 6 digit. Jelas memakan waktu lama dan tidak efisien…Kombinasi 6 digit (saya lupa teori di SMA berapa byk dari angka 0 s.d 9) akan diperoleh ribuan ato buanyak kemungkinan acak nomor kita. Sehingga para pembobol melengkapi diri dengan spy camera agar ga usah trial error yang bikin pegel jari-jari tangan…he3
…….

Begitulah…dalam dunia teknologi informasi, validasi user name dan password menjadi hal yang sangat wajib dlakukan. Dalam setiap aplikasi, tidak semua user berhak mengakses modul-modul dalam aplikasi usaha. Hanya pemegang “all access” diberikan pada supervisor ato pemilik usaha. Hal ini menjadi standar umum sistem aplikasi berbasis jaringan ato yang multiuser.

Teknologi informasi tidak bisa lepas dari database, oleh karena database manajemen sistem menggunakan syntax SQL (structured query language) baik dalam manipulasi dan definisi data, maka para hacker mencari kelemahan dari sini juga (disamping masuk melalui “pintu belakang” system operasi yang berlubang , baca ttg hacking dll). Istilah yang berkembang di kalangan IT adalah SQL injection.


SQL injection dalam desktop aplikasi dilakukan dalam form Login. Seseorang berusaha masuk dan menggunakan aplikasi (tanpa harus menggunakan username dan password yang tersimpan di database) sehingga mempunyai hak akses sebagai supervisor atau all access. Validasi (pengecekan data) suatu form Login menggunakan syntax SQL, secara umum sbb:

  "SELECT * FROM SyLogin WHERE NamaUser = '" & (txtUser) & "' AND pass = '" & (txtPassword) & "'"

Tampak dalam syntax, mempunyai arti : “tampilkan semua data pada tabel SyLogin dengan kondisi kolom NamaUser DAN kolom pass sesuai dengan nilai kembalian objek visual dalam aplikasi (txtUser dan txtPassword)”

Hal yang perlu ditekankan disini adalah bahwa kondisi yang terpenuhi adalah baik kolom NamaUser DAN kolom pass harus mempunyai nilai yang sama dengan objek visual (textbox). Jika dan hanya jika keduanya bernilai True atau benar, maka user dapat memasuki aplikasi.

Teknik SQL injection, secara sederhana harus bisa mengkondisikan kedua kondisi bernilai benar, yaitu dengan pernyataan (mis, " or "1"="1 ) yang dituliskan pada
Kotak isian Username dan juga password. Bagaimana hal ini bisa terjadi?

Dalam suatu teori logika, dua kondisi pernyataan ATAU (OR) jika hanya jika bernilai salah apabila kedua pernyataan itu juga bernilai salah.
Pada pernyataan " or "1"="1 (tanda petik, tanda yang digunakan dalam suatu aplikasi yang bertipe data string), dapat dibaca sbb:

Pernyataan 1 adalah suatu karakter kosong yaitu ( " )
Pernyataan 2 adalah suatu pernyataan "1"="1 (yang apabila dibaca dalam aplikasi menjadi "1"="1" )

Kedua pernyataan digabungkan dengan suatu operand (tanda operasi OR)
Ingat, pernyataan OR bernilai salah, jika hanya jika kedua pernyataan itu juga bernilai salah. Sehingga apapun bentuk pada pernyataan 1, karena pada pernyataan 2 adalah bernilai Benar, maka kondisi "1"="1" ini akan dibaca oleh syntax SQL bernilai benar.

Sehingga dengan mengetikkan pernyataan " or "1"="1 ini pada kotak isian username dan password, maka user ilegal dapat masuk. Pernyataannya adalah, dapatkah user ilegal itu mengakses modul-modul aplikasi yang ada?

Script anti SQL Injection menjadi suatu syarat mutlak pada standar aplkasi desktop dan web yang berbasis multi user. Yang secara garis besar harus bisa mengubah suatu pernyataan-pernyataan “berbahaya” terkait SQL Injection, misal penggunaan kombinasi OR tanda petik dua (“) dan satu (‘)


Function AllowCharPass(SQLStrPass As String) As String

NotAllowCharSet = "' union select UNION SELECT ; -- | Or And "
splitStr = Split(NotAllowCharSet, " ")
For i = 0 To UBound(splitStr)
If splitStr(i) = "'" Then
SQLStrPass = Replace(SQLStrPass, splitStr(i), "/")
Else
SQLStrPass = Replace(SQLStrPass, splitStr(i), "")
End If
Next i
AllowCharPass = SQLStrPass
txtPassword.Text = AllowCharPass
End Function

Silakan googling di VB-bego.net …….

Bisa Ya bisa Tidak, tergantung sudah dilengkapi belum suatu aplikasi dengan modul pengaturan HAK AKSES









Komentar

Postingan populer dari blog ini

Monitoring Progress Proses dalam Digital Printing Advertising – Multi User (Sistem Titip)

Surat Perintah Kerja dalam Usaha Digital Printing

Manajemen Informasi Bengkel 02 – Otomatisasi penggajian komisi penjualan