Membuat Secure Login dengan Captcha dan Session Expire Info Post Unknown Show 06.40 Keamanan sangat penting nilainya guna mengamankan data pada aplikasi web (web application) agar tidak terjadi kecolongan akses dan data penting.
di 06.40 Kirimkan Ini lewat EmailBlogThis!Berbagi ke TwitterBerbagi ke FacebookBagikan ke Pinterest Label: Keamanan, php Share:
Log In merupakan fitur utama yang paling penting dibuat di sebuah project website. Pada umumnya sistem Log In memanfaatkan cookie dan session, dan hanya menggunakan validasi yang sangat sederhana. Sayangnya seringkali kita lupa kalau sistem Log In itu adalah pintu utama yang kalau terlalu sederhana akan sangat mudah dijebol.. Halaman Log In yang kita buat setidaknya harus mampu menangani serangan-serangan umum seperti berikut ini :
Sistem log in yang hanya memanfaatkan session umumnya rentan dengan serangan brute force dan session hijacking. Karena itu di tutorial kali ini kita akan mencoba membuat halaman login dan validasi yang setidaknya mampu mengatasi serangan-serangan tersebut.
Step 1 : Pembuatan Database dan Struktur Tabel Pertama-tama kita buat databasenya dulu, untuk cepatnya bisa langsung jalankan SQL ini di database yang sudah kita buat..
Ada 2 tabel yang perlu kita buat, yaitu tabel tb_admin, fungsinya seperti biasa untuk menampung data admin yang memiliki akses. Di contoh passwordnya menggunakan metode password_hash di PHP, makanya formatnya $2y$10.......... Tabel tb_admin_log akan digunakan untuk merekam segala aktivitas login berhasil maupun login gagal. Tabel tb_admin_log inilah yang akan membantu kita melakukan pengecekan terhadap serangan brute force dan session hijacking.
Step 2 : Koneksi dan File Library Di contoh tutorial ini saya akan menggunakan Native PHP Data Object (PDO). Kalau konsepnya sudah dipahami, nanti bisa diterjemahkan ke framework apa saja kok.. Di folder project kita, buat sebuah folder conf untuk menampung file penting kita yaitu conn.php, library.php, dan ClassLogin.php.
Class Login sudah diisi method-method yang nantinya akan digunakan. Default valuenya dibiarkan dulu seperti itu saja, sampai nanti kita edit satu per satu. Sekarang kita akan membuat file index.php di direktori utama project kita.
file conf/conn.php harus selalu diinclude di semua halaman nantinya. Karena di satu file tersebutlah kita memanggil library, class login, dan databasenya. Variabel $login sudah dideklarasikan di file conn.php sebelumnya, sehingga bisa langsung digunakan sebagai objek. Sekarang kita akan membuat form loginnya di file login.php.
Sederhana saja.. Apabila project tersebut diakses, maka tampilannya adalah seperti ini :
Step 3 : Proses Login Sekarang kita membuat file login-proses.php untuk validasinya. Algoritma proses loginnya secara umum adalah :
Dengan algoritma tersebut, kita dapat merancang login-proses.php menjadi seperti berikut :
Sampai disini apa sudah bisa berjalan? Jelas.. Jelas belum bisa.. Class Loginnya kan masih kosong begitu.. Sekarang kita akan mengisi seluruh method yang sudah disebutkan di login-proses.php tadi sesuai alur logika yang diinginkan.
Step 4 : Penyesuaian Class Login Salin method-method dibawah ini, letakkan sesuai di class Login yang sudah ada tadi. Penjelasan singkatnya bisa dilihat di komentar-komentarnya
0
Dan terakhir .... 1
Last Step : Pengujian Untuk menguji, kita akan membuat file tambahan di direktori utama : home.php. Karena di halaman index.php sebelumnya sudah dibuat kondisi cek_login(), jika true akan diarahkan ke home.php. 2Sekalian kita buat file logoutnya juga di direktori utama : logout.php. 3
SELESAI.. Kita akan cek satu per satu.. Pertama, metode Bruteforce nggak akan berjalan di halaman Log In ini.. Karena sudah ada fungsi cek_salah_login() yang akan langsung menutup akses login ketika sudah mencapai sekian kali kesalahan. Kedua, metode SQL Injection juga nggak akan berjalan. Karena kita menggunakan escaping ($db->quote), dan fungsi prepared statement di semua query yang ada. Ketiga, metode Session Hijacking juga nggak akan berjalan, karena cookie token yang diremember sekalipun disimpan untuk dicek IP dan User Agentnya. Sehingga apabila cookie tersebut dicuri sekalipun, karena IP dan User Agent yang berbeda login tidak dapat dilakukan juga. Silakan dicoba, apakah sudah bisa berjalan atau tidak.. Kalau sudah stuck, dan masih nggak ketemu juga errornya dimana, silakan langsung download file jadinya saja di www.tianrosandhy.com/download/prompt/advance-secure-login. Apa gunanya session di PHP?Apa itu Session di PHP? Session adalah mekanisme untuk mempertahankan informasi di semua halaman web yang berbeda untuk mengidentifikasi pengguna saat mereka menelusuri situs atau aplikasi.
Dimana session PHP disimpan?Berbeda dengan cookies yang disimpan di browser, session disimpan di dalam web server.
Bagaimana cara kerja session pada PHP?Cara kerja Session:
Saat pengunjung mengakses suatu halaman, pengunjung tersebut memulai session (digunakan fungsi session_start()). Bila dalam konfigurasi php, session.auto_start diset ke 1 maka php akan melakukan start session secara otomatis.
Bagaimana cara mengakhiri session pada PHP?Untuk mengakhiri session pada PHP, kita gunakan perintah session_destroy() , dengan perintah ini maka file session akan dihapus dari server. contohnya ketika user logout, maka session akan berakhir dan user diminta untuk login kembali.
|