Buatlah tabel users untuk dengan struktur seperti di bawah (bisa menggunakan phpMyAdmin atau yang lain). KolomTipe DataKeteranganidintegerprimary key, auto incrementusernamevarcharuniquepasswordvarcharsaltvarcharkarakter acak untuk perkuat passwordaktiftinyint1 = user aktif, 0 tidak aktifnamavarcharKolom lain bisa ditambahkan sesuai dengan kebutuhan Mebuat file untuk validasi aksesBuatlah file 0. Kemudian jika tidak ada informasi browser, IP atau user di session arahkan user ke halaman login. Selanjutnya cek apakah informasi browser yang disimpan di session sama dengan 1 dan alamat IP sama dengan 2. Jika misalnya cookie dicuri, maka tidak akan bisa digunakan karena alamat IP pencuri pasti berbeda. Kemudian file ini bisa di-include di file yang harus diakses setelah login seperti di bawah.
Sekarang buatlah file 3 dan buat html form login seperti di bawah, dengan 2 input username dan password
Kemudian di bagian paling atas file tambahkan kode php untuk membuat validasi password user.
Kembali paling atas mulai session dengan 4. Kemudian jika user mencoba login dengan mengklik tombol login, buat koneksi ke database dengan. File 5 untuk membuat koneksi ke datatabase seperti kode di bawah. Di baris ke-6 sampai ke-8 kita cari data user dengan username yang telah dimasukkan user. Jika tidak tidak ditemukan (baris ke-9), set 6 dengan 7. Begitu juga jika user tidak aktif, atau password tidak sama dengan yang di database. Perhatikan baris ke-11. 8 password yang di input user digabungkan dengan data 9 dari database (lebih lengkah penjelasaany di bawah di form tambah user). Terakhir jika password benar dan user aktif maka simpan informasi browser, IP dan user ke session.
Membuat LogoutSetelah berhasil login maka user harus bisa logout. Membuat logout lebih sederhana yaitu dengan menghapus semua informasi session yang telah dibuat di form login seperti kode php di bawah dalam file 0. 1 dan tambahkan form untuk tambah user seperti di bawah.
Setelah itu tambahkan kode php untuk menambah user di bagian paling atas seperti di bawah.
Baris 5-7 kita lakukan validasi password dan ulang password harus sama. Di baris 11-12 kita membuat nilai 9 menggunakan fungsi 3, 4 dan juga 5 agar mendapatkan karakter acak yang lebih baik. Baris 13-19 digunakan untuk menyimpan data user. Perhatikan baris ke-15, 6. Password disimpan dengan gabungan dengan password yang diisi oleh user dan juga salt dengan begitu password yang tersimpan di database tidak pernah sama. Walaupun user input data yang sama. Password juga disimpan dalam bentuk SHA1 sehingga tidak bisa dilihat dengan kasat mata. Dengan 2 kombinasi itu password akan susah ditebak seandainya database berhasil dicuri.KesimpulanDalam tutorial php membuat form login yang lebih aman ini telah dijelaskan cara untuk menangkal pencurian cookie, dengan memvalidasi browser dan alaman IP user. Kemudian password disimpan menggunakan SHA1 sehingga tidak bisa dilihat dengan kasat mata. Password juga dikombinasikan dengan 9 nilai acak yang membuat password yang disimpan di database tidak pernah sama walaupun user memasukkan password yang sama. Sehingga jika terjadi pencurian database password akan sudah ditebak. Perlu dicatat bahwa cara ini tidak benar benar 100% memberi jaminan keamanan. SHA1 dapat dipecahkan menggunakan super komputer. Untuk mengingkatkannya bisa menggunakan bcrypt namun lebih lambat dari pada SHA1. Pastikan juga website anda tidak memiliki masalah XSS. Sehingga cookie tidak mudah dicuri. Ikuti recomendasi dari setting cookie di php. Minimal set cookie 8 dan gunakan SSL di website Anda. |