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





 

 

 

 

 

 

 









Kirim email ke