Pak Gotman, saya coba masukkan ' or 1=1 or ' pada textbox, ga bisa login tuh.
From: programmer-vb@yahoogroups.com [mailto:programmer...@yahoogroups.com] On Behalf Of Gotman Panggabean Sent: 14 Juli 2010 16:27 To: programmer-vb@yahoogroups.com Subject: Re: [programmer-vb] Membuat Form Password hehehe... maaf saya lupa kalau code dibawah, saya sudah menggunakan fungsi "replace" untuk menghindari sql injection, kemungkinan kecil untuk diinject walau masih bisa sepertinya. pada code : strLogin = Replace(txtUsername .Text, "'", "''") strPaswd = Replace(txtPassword .Text, "'", "''") nah jika code diatas diganti menjadi strLogin = txtUsername.Text strPaswd = txtPassword.Text tanpa ada nya fungsi "replace" nah hal ini akan sangat mudah untuk diinject. yang saya maksud pada : 'Mudah untuk di inject maka hindari langkah ini 'Set rst = cnn.Execute( "Select * from tblUser where username='" & strLogin & "' and password='" & strPaswd & "'") pada kondisi dimana tidak menggunakan fungsi "Replace" jika masih tidak percaya silakan rancang form-nya dan dicoba. pada saat dirun.kemudian masukkan/ketik pada textbox txtusername : ' or 1=1 or ' Nah apa yang terjadi : langsung masuk ke dalam frmMain..! masuk yah..? masuk kan..? iya kan .? iya donk...! hehe... canda... tetapi kalau menggunakan Object command semua sql syntaxnya dianggab sebagai string sehingga tanpa perintah "Replace" akan tetep aman. (AMAN dari Sql Injection) Semoga Membantu. Regards, Cotman I'm not good enough, Tell me if there're many mistake of the code above. --- Pada Sel, 13/7/10, Anez Story <anez_st...@yahoo.com> menulis: Dari: Anez Story <anez_st...@yahoo.com> Judul: Re: [programmer-vb] Membuat Form Password Kepada: programmer-vb@yahoogroups.com Tanggal: Selasa, 13 Juli, 2010, 10:10 PM dear gotman panggabean, 'Mudah untuk di inject maka hindari langkah ini 'Set rst = cnn.Execute( "Select * from tblUser where username='" & strLogin & "' and password='" & strPaswd & "'") hmm..saya biasa pakai coding diatas untuk membuat form login.. kalau boleh tau cara user untuk membobol nya bagaimana ya? best regrads, story _____ From: Gotman Panggabean <cotman_2005@ yahoo.com> To: programmer-vb@ yahoogroups. com Sent: Tue, July 13, 2010 7:14:39 PM Subject: Re: [programmer- vb] Membuat Form Password materinya lumayan menarik... mencoba ikut membahas... nah untuk menghindari Sql Injection di VB gunakan object command untuk membungkus syntax sql ini biasa saya gunakan. Perhatikan code dibawah ini. Asumsi : Database : Ms. Access (Apa saja databasenya. .. hanya melakukan perubahan pada connection string nya saja) Table : tblUser(Field : Username dan Password) Code nya adalah : Private Sub Command1_Click( ) Dim cnn As New ADODB.Connection Dim strLogin As String, strPaswd As String cnn.CursorLocation = adUseClient cnn.Open "Provider=Microsoft .Jet.OLEDB. 4.0;Data Source=C:\DB. mdb;Persist Security Info=False" strLogin = Replace(txtUsername .Text, "'", "''") strPaswd = Replace(txtPassword .Text, "'", "''") Dim rst As New ADODB.Recordset 'Mudah untuk di inject maka hindari langkah ini 'Set rst = cnn.Execute( "Select * from tblUser where username='" & strLogin & "' and password='" & strPaswd & "'") 'Solusinya gunakan object command Dim ocmd As New ADODB.Command ocmd.ActiveConnecti on = cnn ocmd.CommandType = adCmdText 'Gunakan parameter disini : ocmd.CommandText = "Select * from tblUser where username=? and password=?" 'Isi nilai parameternya ocmd.Parameters( 0).Value = strLogin ocmd.Parameters( 1).Value = strPaswd 'ocmd.Execute 'set recordsetnya dari object command Set rst = ocmd.Execute( ) If rst.RecordCount > 0 Then frmMain.Show frmMain.Caption = "Welcome - " & txtUsername. Text frmLogin.Hide Else MsgBox "Invalid Username or password !", vbCritical, "Warn" txtPassword. Text = "" txtPassword. SetFocus End If End Sub Hasilnya bebas dari Sql injection. Semoga Membantu. Regards. Cotman. --- Pada Sel, 13/7/10, Anez Story <anez_st...@yahoo. com> menulis: Dari: Anez Story <anez_st...@yahoo. com> Judul: Re: [programmer- vb] Membuat Form Password Kepada: programmer-vb@ yahoogroups. com Tanggal: Selasa, 13 Juli, 2010, 5:58 PM dear johan max, weleh2..bahasanya tinggi sekali..hehe oo..pake stored procedure ya.. ntu stored procedure bawaan sql server ato kt buat lagi? kalau bawaan sql server, stored procedure yang mana? maklum saya belum pernah pakai stored procedure sebelumnya.. . best regrads, story _____ From: johan max <johans...@yahoo. com> To: programmer-vb@ yahoogroups. com Sent: Tue, July 13, 2010 3:12:46 AM Subject: Re: [programmer- vb] Membuat Form Password Cara yang bener seharusnya a. memanggil stored procedure b. menggunakan parameter jadi dihindari proses akses ke table langsung. TDD = test driven development. Layering= pemisahan tanggung jawab yang jelas antara tiap komponen. Ada komponen ui, bisnis, data, data akses. Dengan dibagi-bagi seperti ini maka : 1. pengetesannya mudah 2. akan mengikuti perinsip solid 3. mengurangi dependency 4. team work akan sangat berjalan 5. memudahkan code review dan inspection karena menurunkan derajat cylocmatic complecity, loc dan maintenance complecity. _____ From: Anez Story <anez_st...@yahoo. com> To: programmer-vb@ yahoogroups. com Sent: Tue, July 13, 2010 4:29:41 PM Subject: Re: [programmer- vb] Membuat Form Password dear johan max, oow..bahaya jg ya.. jd user lain bisa langsung akses database kt.. jd cara yang benar bagaimana pak johan? btw ttd dan layering tuh apa ya? best regrads, story _____ From: johan max <johans...@yahoo. com> To: programmer-vb@ yahoogroups. com Sent: Tue, July 13, 2010 1:51:05 AM Subject: Re: [programmer- vb] Membuat Form Password SQL injection itu adalah sebuah teknik untuk menginjeksi sebuah string query ke sebuah perintah query. Biasanya digunakan hacker untuk mendapatkan hak akses. Contoh ini query yang berbahaya : select *from <nama_tabel> where username=" & username_txt. text jika username_txt. txt memuat isi 1 or 1=1 maka perintah querynya akan menjadi select * from <namatable> where username =1 or 1=1 yang hasilnya akan selalu benar sehingga hacker dapat memperoleh hak akses kesana. Alternatif lain adalah menggunakan tanda ; jika username_txt. text berisi 1;select * from user; ada kemungkinan sqlnya error karena tidak ada tabel user. Dari situ dapat diketahui ada tabel apa yang ada di database. bagaimana kalo username_txt. textnya berisi 1;delete * from penjualan Maut kan. Terakhir cara di atas tidak mendukung tdd dan layering. Kelemahan lain adalah sangat bergantung pada settingan collation database. Ini membuat untuk validasi user bermasalah. _____ From: Anez Story <anez_st...@yahoo. com> To: programmer-vb@ yahoogroups. com Sent: Tue, July 13, 2010 7:53:26 AM Subject: Re: [programmer- vb] Membuat Form Password dear johan, sql injection tuh apa ya? bahaya nya gimana? best regrads, story _____ From: johan max <johans...@yahoo. com> To: programmer-vb@ yahoogroups. com Sent: Mon, July 12, 2010 1:29:05 AM Subject: Re: [programmer- vb] Membuat Form Password Wah kalian ini tidak tahu sql injection ya. Kode di bawah gampang banget diinject dengan sql injection. Bahaya tuch. Nggak boleh ada concatenasi string di query harus pake parameter.. _____ From: Frangky id <franklin.id@ gmail.com> To: programmer-vb@ yahoogroups. com Sent: Mon, July 12, 2010 3:10:01 PM Subject: Re: [programmer- vb] Membuat Form Password Kalau metode searching WHere-nya hanya username, kemungkinan kalau Password yang diinput salahpun, pasti diterima. Pada 12 Juli 2010 12:23, Yusuf Afandi <cr_4...@yahoo. com> menulis: coba masukkan ke database. buat database yang isinya username dan password. kalo mau diganti tinggal di searching username nya trus password nya diganti . bener kata mas ado. kalo pake mysql searching bisa pake listing ini : "select *from <nama_tabel> where username=" & username_txt. text mas ado mas bahar salam kenal.... best regrads..... ......... ucup a. _____ From: Edwar Rinaldo <a...@gramediapublish ers.com> To: programmer-vb@ yahoogroups. com Sent: Wed, May 11, 2011 10:28:55 AM Subject: Re: [programmer- vb] Membuat Form Password coba jawab yah mas, mungkin bisa docoba cara berikut mas, ketika user login, simpan username dan password di global variabel mas, jadi jika user ingin mengganti password nya mas bisa gunakan where nya username, tapi username nya kudu unique yah mas. Regards Ado ----- Original Message ----- From: Aceng Baharudin To: programmer-vb@ yahoogroups. com Sent: Wednesday, June 16, 2010 9:18 AM Subject: [programmer- vb] Membuat Form Password Dear All, Maaf mau minta bantuan kepada semua Senior yang ada di Millis ini. Saya mohon bantuannya untuk memberikan solusi dalam membuat Form Login yang isinya Username dan Password. akan tetapi Passwordnya bisa diganti apabila di kemudian hari User ingin mengganti Passwordnya. Mohon pencerahan untuk code-code nya! sebab saya hanya baru tahu password yang sifatnya statis, hanya satu kali saja dan tidak bisa diganti-ganti. Terima kasih atas perhatian dan bantuannya. Salam, Bahar .:: Group of Book Publishing - Kompas Gramedia