DjieSoft, All About Source Code


This is about programming, information technology, computers, source code, program, application and more ...
_______________________________________________________________________________{FOR EDUCATION}
Search in djiesoft

Search with Google

1.Banyak Web/Blog Lain Yang Meng-COPY Sebagian/Seluruh Content/Isi Blog DJIESOFT. BE CAREFUL !!!
2.Beberapa LINK DJIESOFT ada yang Broken karena TUSFILES menghapus file yang sudah lama/expired (1 Year).
3.Please report broken link to be re-Uploaded !

Senin, 27 Agustus 2012

Cara Membuat Form Login Yang Aman (Secure From SQL Injection) VB6/VBNET

Secara singkat sql injection adalah menambahkan perintah sql query melalui input box (textbox, combobox, dll) dengan tujuan untuk memodifikasi sql query yang sudah ada atau menciptakan sql query baru. Biasanya orang yang baru belajar programming sering mengabaikan masalah security ini, contoh kasus:
Sintak/sql quer untuk Login biasanya seperti ini :

"SELECT USER_ID, PASSWORD FROM MS_USER WHERE USER_ID='" + Txt_User.Text + "' AND PASSWORD='" + Txt_Pass.Text + "'"

Nah jika user/operator menginputkan pada Txt_User dan Txt_Pass seperti ini : ' OR '1'='1
Maka setelah aplikasi/program Run, sintak/sql query tersebut akan berubah menjadi seperti ini :

"SELECT USER_ID, PASSWORD FROM MS_USER WHERE USER_ID='' OR '1'='1' AND PASSWORD='' OR '1'='1'"
Dan ini akan menghasilkan nilai TRUE, sehingga user (anonymous) akan dapat masuk sesuka hati tanpa harus tahu user id dan password-nya.

Ada beberapa solusi untuk mengatasi masalah ini, diantaranya adalah :
  1. Menghilangkan (Replace) karakter kutip satu (') dengan karakter kosong, contoh :
    Txt_User.Text.Replace("'", "")
  2. Memendekan MaxLength TextBox sesuai dengan field database, contoh jika di table field User_Id = Varchar(10), maka Txt_User pun harus MaxLenght=10 juga agar user tidak bebas/kepanjangan menginput sesuatu/apapun pada textbox tersebut.
  3. Mengubah sintak/sqlquery menjadi seperti ini :
"SELECT USER_ID, PASSWORD FROM MS_USER WHERE USER_ID='" + Txt_User.Text.Replace("'", "") + "'"
'...sintak anda untuk mengecek keberadaan user, Jika User Ada Maka Cek Password, Contoh :
IF reader.Item("PASSWORD") = Txt_Pass.Text.Replace("'", "") Then
    '...sintak anda jika login SUKSES
Else
    '...sintak anda jika login GAGAL
End IF
3 cara diatas adalah sebagian dari banyak cara yang dapat anda lakukan untuk mencegah terjadinya sql injection dari tangan tangan yang jahil dan tidak bertanggung jawab. Semoga artikel saya ini bermanfat ntuk anda. Terimakasih.

Tags:
sql injection example, cara membobol form login vb, cara membuat form login yang aman, security pada form login visual basic, Coding techniques for protecting against Sql injection, Preventing SQL Injection in vbnet, Validating User Input - SQL Injection Attacks in VB.NET, mengurangi kelemahan dari form login (swl injection), cara memjebol baypass user id dan password pada form login logon vb, masuk ke aplikasi tanpa login database, cara membuat login user yang aman, user trustee pada form login,Proteksi awal terhadap SQL injection, How To Sql Injection Visual Basic, Anti SQL Injection, Teknik coding untuk perlindungan terhadap SQL Injection



Related Post:

33 komentar:

  1. wah keren nih tips membuat menu loginnya sobat...

    BalasHapus
    Balasan
    1. ijin seruput ya mas, masihperlu banyak belajar nih mas.,
      saya sedang membuat skripsi nih mas, membuat aplikasi program administrasi dan inventory peralatan shoting menggunakan VB, sekiranya dapat membantu, email : tinoaryanto@yahoo.co.id
      sebelumnya terimakasih

      Hapus
    2. silahan,,, semoga skripsinya LANCAR dan BERHASIL ya,,
      boleh, silahkan tanyakan apasaja, klo sekiranya saya tahu, tentu saya akan jawab.

      Hapus
  2. Keren sob infonya,saya sudah hampir 1th tidak pernah lagi buka vb,jadi aga males sekarang dengan tips ini jadi lumayan nambah semangat buat buka vb lagi :)

    BalasHapus
    Balasan
    1. iya mas fajar... wah klo udah 1 tahun mah biasanya banyak yg lupa nya (kaku lagi) hehee... bercanda.com

      Hapus
  3. well , tips lumayan nih , hehe .
    Tapi sayang coding vb.net sama vb 6 jauh berbeda mas , hehe .
    oh ya , thx before mas file vb.net nya , skrng udh bisa di install dan di pakai , cuma skrng yg jdi masalah , jdi lemot pake vb6 & vb.net , wkwk .
    Kunjungan baliknya di tunggu mas .

    http://cheatrakasaga.blogspot.com

    BalasHapus
  4. iya mas raka,, selamat menikmati..hehehe,, contoh diatas kan yg penting logikanya bukan sintaknya. vb6 or .net serupa tp tak sama..
    siap saya kunjungi balik !

    BalasHapus
    Balasan
    1. hehe , iya mas :D
      Mas , kita kerja sama yuk mas .
      Kita bikin kumpulan source code kyak vbego , gmna mas mw kgk ? Dri dulu itu pesan fb aku blum di bales juga . Aku nanyain no hp mas itu bkan bwt macem" loh -.-

      Hapus
    2. ok mas raka,,, maaf ya,,, aduh saya jadi malu nih udah di tagih bra kali... hehe

      Hapus
  5. udah ane follow gan. no 70 eca-ace .follow me too at http://eca-ace.blogspot.com

    BalasHapus
  6. wahh , nice blog kk
    blog nya udah ta' follow
    ditunggu ya follbacknya
    n-gagexs.blogspot.com

    BalasHapus
  7. mas ada gak query yg dinamis....?
    untuk query insert, update, delete...
    jd bisa d pkek d smua tabel....

    BalasHapus
    Balasan
    1. ada,, saya sudah buat functionnya,, tp blm saya posting.. tunggu aja ya,,

      Hapus
    2. wah pas nih.....
      ditunggu postingannya mas....
      sdah gak sabar saya....
      hehehe

      Hapus
  8. ok.. makasih.. segera saya follback!

    BalasHapus
  9. hohoho jujur saya tidak mengerti XD tapi meski begitu saya ingin belajar dan tahu :P saya sudah follow blog Anda :) kunjungi balik dan follow back-nya ^_^

    BalasHapus
    Balasan
    1. iya,,tak ada kata terlambat untuk belajar, makasih, segera saya follback,,,

      Hapus
  10. dah tuh gan follback yak http://ngakak-beloger.blogspot.com/

    BalasHapus
  11. mantap gan.. baru liat trik kaya gini di vb.net...btw ijin sedot ebooknya gan...

    Keep blogging....

    BalasHapus
  12. mas kpan nih di posting yg materi tentang query insert, update, delete dinamis.....
    lgi butuh bgt....
    buat tugas kuliah...

    BalasHapus
    Balasan
    1. maaf bos,, lagi sibuk di kantor nih.. secepatnya.. makasih,

      Hapus
    2. klo kirim email bisa gak mas.....?
      butuh sangat nih....

      Hapus
  13. mas tolong kasih tutorial tentang validasi hanya angka/huruf yang bisa diinputkan pada textbox,dan apabila nilai yang diinputkan tidak sesuai maka pada textbox tidak akan menampilkan nilai tersebut, trims

    BalasHapus
    Balasan
    1. sebenarnya sintak paling mudah untuk validasi seperti ini:

      If IsNumeric(Text1.Text) = False Then
      MessageBox.Show("Input dengan data Numeric !", "Warning")
      Text1.Text = 0
      Text1.Focus()
      End If

      jika ingin saat user ketik salah (misal ketik huruf) langsung muncul pesan,, simpan sintak ditas di event :
      Private Sub TextBox1_TextChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles TextBox1.TextChanged
      If IsNumeric(sender.Text) = False Then
      MessageBox.Show("Input dengan data Numeric !", "Warning")
      sender.Text = 0
      sender.Focus()
      End If
      End Sub

      jika ingin validasi saat user pindah ke textbox, simpan di event :

      TextBox1_LostFocus

      jika ingin saat user menekan "enter" simpan di event:
      Private Sub TextBox1_KeyDown(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyEventArgs) Handles TextBox1.KeyDown
      If e.KeyCode = Keys.Return Then
      'simpan sintak disini
      End If
      End Sub

      Hapus
  14. makasih sobat infonya berguna banget... saya baru tau ternyata bisa dijebol ya.. makasih ya bro...

    BalasHapus
  15. apakah kalo username dan password yg tersimpan di database di encryp pake md5 hal ini akan terjadi juga?

    BalasHapus
    Balasan
    1. saya belum coba, tp sepertinya akan sama saja bisa dijebol klo sintak query nya tetap seperti itu, karena disini bukan nilainya yg lihat, tp sintak query-nya yg di ubah,

      maka dari itu harus diubah seperti yg saya tilis diatas

      Hapus