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.ActiveConnection = 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 <[email protected]> menulis:
Dari: Anez Story <[email protected]>
Judul: Re: [programmer-vb] Membuat Form Password
Kepada: [email protected]
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