Posted by : Rhyf Ahmad
Friday, February 08, 2013
Masih ingat dengan postingan saya beberapa bulan yang lalu? Tentang Form Login Visual Basic .Net Menggunakan Database Access? Sekilas form login ini memang cukup aman, namun bagaimana jika ternyata data yang ada di dalam database terbuka? Hal ini akan berakibat fatal bagi si empu software, namun jangan takut, kali ini ane mau ngasih tau cara yang LEBIH AMAN dalam memproteksi user account yang terdapat dalam database dengan menggunakan metode HASH ala SHA1. Penasaran?
Kode-kode ini saya rancang sendiri setelah 15 menit ngutak-ngatik VB .Net, walaupun tidak jauh berbeda dari kode sebelumnya, namun saya yakin kode ini lebih aman ketimbang kode-kode yang diberikan pada postingan sebelumnya. Dan untuk melanjutkan membaca, silahkan agan membuat database terlebih dahulu dengan nama Login.mdb. Format Database Access ini menggunakan format Access 2000-2003, sama seperti database yang digunakan pada postingan sebelumnya. Jika sudah, close terlebih dahulu database yang sudah dibuat tadi. Buka kembali Microsoft Access (Jangan buka databasenya yah gan), lalu tekan kombinasi tombol Ctrl + O pada keyboard, kalo udah, klik satu kali saja pada nama database yang tadi sudah dibuat, lalu klik tanda panah kecil pada Open Button Microsoft Office dan pilih Open Exclusive.
Tambahkan data ini ke dalam tabel Username :
Username : ae9168852429c4fc73a829dac15f3fb
Password : 61243c7b9a4022cb3f8dc3106767ed12
Database nantinya bakal nampak tuh gan, lalu di dalam Tab File > Info, pilih Set Database Password, silahkan masukkan password database yang agan kehendaki, terserah deh apa aja. OK. Simpen dulu gan databasenya, jangan ampe dimakan kucing. Kita buka aja dulu tuh aplikasi VB .Netnya, dan buat sebuah form sebagai form login nantinya. Propertynya bisa agan sesuaikan, tapi sebagai standar, silahkan ikuti yang di bawah ini :
Form1
Name : Login
TextBox1
Name : txtUser
TextBox2
Name : txtPass
Button1
Name : btnLogin
FlatStyle : Flat
Text : Login
Button2
Name : btnCancel
FlatStyle : Flat
Text : Cancel
Nanti jadinya kayak gene neh gan :
Simpan dulu yah projectnya, ke direktori yang agan mau. Kalo udah disimpen, masih inget ga tadi nyimpen databasenya di mana? Yah, lupa yah? Padahal tadi saya minta agan naruh database ke dalam direktori (contoh) E:\NamaProject\bin\Debug. Di situ gan naruh databasenya, ntar agan kalo udah ketemu taruh di situ yah.
Update..!!
Silahkan agan buat form2 dengan nama bebas ajah, lalu sisipkan sebuah label di sana, jangan ada yang dirubah ya gan. Ini hanya contoh saja, yang nantinya form2 ini akan muncul jika username dan password ada dalam database.
Lanjut kita ke bagian koding.
Update..!!
Silahkan agan buat form2 dengan nama bebas ajah, lalu sisipkan sebuah label di sana, jangan ada yang dirubah ya gan. Ini hanya contoh saja, yang nantinya form2 ini akan muncul jika username dan password ada dalam database.
Lanjut kita ke bagian koding.
Pertama, pada jendela Form1 tadi, tekan F7 untuk melihat kode apa saja yang ada pada tuh form kita, dan di atas kode Public Class Login, ketikkan kode di bawah ini :
Imports System.Security.Cryptography
Kode di atas bertujuan agar kita bisa memakai fungsi kriptografi yang ada pada system. Selanjutnya, kita buat variabel global untuk form Login, tepatnya dituliskan di bawah kode Public Class Login.
Dim DA As New OleDb.OleDbDataAdapter
Dim DT, DT2 As New DataTable
Dim SQL, SQL2 As String
Gimana? Udah belon? Lanjut kita akan menuliskan sebuah Function Hash ke dalam form Login tepat di bawah kode di atas.
Dim sha1hash As New SHA1CryptoServiceProvider
Dim byteH As Byte()
Dim byteV As Byte()
byteH = System.Text.Encoding.ASCII.GetBytes(password)
byteV = sha1hash.ComputeHash(byteH)
Dim pass As String = ""
For Each b As Byte In byteH
pass = b.ToString("x2")
Next
Return password
End Function
Kemudian, ketikkan juga kode di bawah ini :
DT.Clear()
Dim user1 As String
Dim user2 As String
user1 = TxtPass.Text
Call Hash(user1)
user2 = Hash(user1)
Sql = "SELECT * FROM Username Where username='" & user2 & "'"
DA.SelectCommand = New OleDb.OleDbCommand(Sql, KNS)
DA.Fill(DT)
End Sub
Sub Cari2()
DT2.Clear()
Dim pass1 As String
Dim pass2 As String
pass1 = TxtPass.Text
Call Hash(pass1)
pass2 = Hash(pass1)
SQL2 = "SELECT * FROM Username where Password='" & pass2 & "'"
DA.SelectCommand = New OleDb.OleDbCommand(Sql, KNS)
DA.Fill(DT2)
End Sub
Banyak yah gan? Dikit lah segitu sih.Lakukan double klik di sembarang tempat pada form Login, nanti kursor secara otomatis berada pada kode Form On-Load, ketikkan kode di bawah ini yah gan :
KNS.ConnectionString = "Provider=Microsoft.ACE.OLEDB.12.0;
DATA SOURCE=" & Application.StartupPath & "\Login.mdb"
Kodenya nyambung tuh gan, jangan dipisah-pisah ye, kalau di dalam postingan ini hanya karena keterbatasan ruang untuk menuliskan kodenya sajah. Dan kode di atas merupakan database yang tidak memiliki password, jika memiliki password, agan make kode di bawah ini gan.
KNS.ConnectionString = "Provider=Microsoft.ACE.OLEDB.12.0;
DATA SOURCE=" & Application.StartupPath & "\Login.mdb";
Jet OLEDB:Database Password=passwordnyatarohdisinigan;
Langkah selanjutnya, double klik btnCancel, dan masukkan kode di bawah ini gan :
If MessageBox.Show("Are U Sure U Want To Exit?",
"Madriva : Login", MessageBoxButtons.YesNo,
MessageBoxIcon.Question) = Windows.Forms.DialogResult.Yes
Then
Application.Exit()End If
Inget gan, tuh kode dari MessageBox.Show ampe DialogResult.Yes, disambung yah, jangan dipisahin,yang selanjutnya, tanda underscore pink ( _ ) menandakan bahwa kode disambung dengan kode yang dibawahnya. Dan inilah kode utama kita kali ini, lakukan double klik pada btnLogin dan masukkan kode di bawah ini :
On Error Resume Next
'Pemanggilan Sub
Cari()
Cari2()
Dim pass1 As String
pass1 = TxtPass.Text
Dim pass2 As String
Dim user1 As String
user1 = TxtUser.Text
Dim user2 As String
'Pemanggilan fungsi Hash
Call Hash(pass1)
pass2 = Hash(pass1)
Call Hash(user1)
user2 = Hash(user1)
'Jika user ditemukan, maka form2 akan muncul
If (user2 = (DT.Rows.Count <> 0)) And (pass2 = _
(DT2.Rows(0)(1))) Then
If (pass2 = (DT2.Rows.Count <> 0)) Then
'Form2 akan melakukan penampakan
Form2.Show()
'Form Login bersembunyi di semak-semak
Me.Hide()
Form2.Label1.Text = "Selamat Datang " & "" & TxtUser.Text
TxtPass.Clear()
TxtUser.Clear()
Else
'Jika user tidak ditemukan dalam database, maka akan mncul
'yang kayak beginian
MessageBox.Show("Anda gagal Login", "Informasi", _
MessageBoxButtons.OK, MessageBoxIcon.Information)
TxtPass.Clear()
TxtUser.Clear()
End If
Else
MessageBox.Show("Anda gagal Login", "Informasi", _
MessageBoxButtons.OK, MessageBoxIcon.Information)
TxtPass.Clear()
TxtUser.Clear()
End If
Langkah terakhir adalah dengan mendeklarasikan event pada kedua TextBox kita, caranya dengan masuk pada jendela code, dan pilih txtUser pada combobox pertama, dan KeyUp pada combobox kedua.
Ketikkan kode di bawah ini :
btnLogin.PerformClick()
End If
Lakukan hal yang sama pada txtPass.
Nah, cukup sekian saja panduan dari saiia pada kesempatan kali ini, tinggal sobat Blogger menekan tombol F5 untuk menjalankan program.
Username : rhyf
Password : ahmad
Semoga berhasil. :)
Nah, cukup sekian saja panduan dari saiia pada kesempatan kali ini, tinggal sobat Blogger menekan tombol F5 untuk menjalankan program.
Username : rhyf
Password : ahmad
Semoga berhasil. :)
Related Posts :
- Back to Home »
- Programming , Visual Basic »
- Secure Form Login Visual Basic .Net Menggunakan Database Access
{ 4 comments... read them below or Comment }
You can leave a comment to request any article(s), software(s), ebook(s) or report the dead link.
Then I will reply as soon as I can :)
maaf ,mas... klo variabel user1,pass1, user2,pass2 itu buar apa?? bisa dikasih contohnya gak??trimah kasihhh
ReplyDeletemaaf mas, user1,pass1 n user2,pass2 itu deklarasi variabel yg dmana ya?? itu didatabasenya ato buat sendiri d form2 nya?? sekalian dikasih contohnya mas...terimah kasihh
ReplyDeleteuser1 merupakan deklarasi dari txtUser.Text
ReplyDeleteuser2 merupakan deklarasi dari penggunaan fungsi Hash, yang nantinya, fungsi Hash tersebut akan mengkalkulasi nilai dari user1 = txtUser.Text.
Begitu juga dari pass1, merupkan deklarasi dari txtPass.Text, dan pass2 merupakan deklarasi variabel dari penggunaan fungsi Hash yang akan mengkalkulasi nilai dari pass1 = txtPass.Text.
user1, user2, pass1 dan pass2 merupakan deklarasi dari komponen yang ada pada form Login, untuk pembuatan database, silahkan agan masuk ke dalam postingan ini Form Login Menggunakan Database Access
kalau contoh yang dimaksud agan adalah source kodenya, Insya Allah nanti malam akan saya post dan update, sekarang saiianya masih di kantor gan..
hehehe....
gak bisa di copy paste postinganny.
ReplyDelete