Ketika pengguna masuk ke aplikasi web dan kemudian menutup browser web, cookie sesi yang terkait dengan login segera kedaluwarsa. Artinya, jika pengguna mengakses aplikasi web nanti, mereka harus masuk lagi Show
Fitur ingat saya memungkinkan pengguna untuk menyimpan login mereka untuk beberapa waktu, bahkan setelah menutup browser web. Untuk menerapkan fitur ingat saya, Anda akan menggunakan cookie dengan waktu kedaluwarsa di masa mendatang Cara yang umum tetapi tidak amanCara tidak aman untuk mengimplementasikan ingat saya adalah menambahkan id pengguna ke cookie dengan waktu kedaluwarsa
Saat pengguna mengakses aplikasi web, Anda memeriksa apakah id pengguna di cookie valid sebelum memasukkannya secara otomatis Pendekatan naif ini hanya mengandalkan cookie, yang tidak aman karena alasan berikut
Pendekatan yang lebih amanCara yang lebih aman untuk mengimplementasikan fitur ingat saya adalah dengan menyimpan token acak alih-alih id pengguna di cookie dan server basis data Nilai dalam cookie akan terlihat seperti ini _ Dan inilah tabel database yang menyimpan token
Saat pengguna mengakses aplikasi web, Anda mencocokkan token cookie dengan yang disimpan di database. Selain itu, Anda dapat memeriksa waktu kedaluwarsa token. Jika token cocok dan belum kedaluwarsa, Anda bisa mendapatkan id pengguna yang terkait dengan token dan memasukkan pengguna secara otomatis Kueri untuk mencocokkan token akan terlihat seperti ini
Pendekatan ini memecahkan dua masalah di atas
Namun, pendekatan ini memperlihatkan masalah keamanan lain yang dikenal sebagai serangan waktu Ketika database membandingkan token cookie dengan token yang disimpan dalam database, ia mengembalikan waktu perbandingan yang berbeda sesuai dengan seberapa mirip dua token tersebut. Misalnya, jika Anda menyimpan token berikut di cookie _ Dan token berikut dalam database
Saat membandingkan token ini, database membandingkan setiap karakter dalam token dan berhenti mencocokkan saat menemukan ketidakcocokan. Dalam contoh ini, database berhenti pada karakter kedua Namun, saat membandingkan pasangan token berikut _ Basis data berhenti mencocokkan setelah membandingkan karakter terakhir kedua Waktu pembandingan pada contoh kedua akan selalu lebih besar daripada yang kedua karena basis data perlu membandingkan lebih banyak karakter Dengan menguji token yang berbeda, Anda bisa mendapatkan waktu respons yang berbeda. Dengan kata lain, waktunya bocor. Untuk menghindari kebocoran waktu, fungsi perbandingan perlu mengembalikan waktu yang konstan terlepas dari tokennya Mencegah serangan waktuBerikut ini menunjukkan cara mencegah serangan waktu seperti yang diusulkan oleh P. I. E. Dalam pendekatan ini, alih-alih menyimpan satu token di cookie, Anda menyimpan sepasang token. 6 dan 7 dengan format. _8 _6 adalah untuk memilih 7 yang disimpan dalam database. Dalam database, Anda menyimpan hash _6 dan 7
Untuk mem-hash validator, Anda menggunakan fungsi password_hash() Untuk mendapatkan id pengguna, Anda mencocokkan _6 dari cookie dengan 6 dari database
Jika kueri mengembalikan baris, Anda dapat mencocokkan 7 dari cookie dengan 6 menggunakan fungsi 7 Jika validator cocok, Anda dapat memasukkan pengguna dengan 8 secara otomatis Bagian berikut akan menyempurnakan sistem login dengan menambahkan fitur ingat saya menggunakan pendekatan ketiga Buat tabel user_token untuk menyimpan tokenPernyataan berikut membuat tabel 9 yang menyimpan 6, hash 7, 2, dan id pengguna
Tambahkan kotak centang ingat saya ke formulir loginPertama, tambahkan kotak centang ingat saya ke formulir login di file 3 _0 Kedua, tambahkan kode untuk menangani kotak centang ingat saya ke file 4 _1 Di _4, tambahkan kotak centang ingat saya ke pemanggilan fungsi filter() _2 Juga, tambahkan parameter ketiga ke fungsi login() _3 Kami akan kembali untuk menyempurnakan fungsi _6 nanti Tentukan fungsi untuk menangani fitur ingat sayaPertama, buat file _7 di folder 8 Kedua, tentukan fungsi baru berikut untuk menangani token di file 7 Hasilkan tokenBerikut ini mendefinisikan 0 untuk menghasilkan sepasang token acak yang disebut pemilih dan validator _4 Fungsi _0 mengembalikan array dari tiga elemen. 6, 3, dan 8 Parse tokenFungsi _5 berikut membagi token yang disimpan dalam cookie menjadi 6 dan 7 _5 Masukkan token pengguna baruFungsi _8 berikut menambahkan baris baru ke tabel 9 _6 Temukan token oleh pemilihFungsi _0 berikut menemukan baris dalam tabel 9 oleh pemilih. Itu hanya mengembalikan pemilih pertandingan jika token tidak kedaluwarsa dengan membandingkan kedaluwarsa dengan waktu saat ini _7 Hapus token penggunaFungsi _2 berikut menghapus semua token yang terkait dengan pengguna _8 Temukan pengguna dengan tokenFungsi _3 berikut mengembalikan 8 dan 5 dengan token _9 Periksa apakah token validFungsi _6 berikut menguraikan token yang disimpan dalam cookie ( 8) dan mengembalikan 8 jika token tersebut valid dan tidak kedaluwarsa fungsi token_is_valid(string $token). bool { // parse token untuk mendapatkan pemilih dan validator [$selector, $validator] = parse_token($token); 0 Memodifikasi fungsi di auth. phpBerikut ini menjelaskan perubahan fungsi dalam file 9 Fungsi login()Berikut ini menambahkan parameter ketiga _0 ke fungsi 6 1 Jika 0 adalah 8, panggil fungsi 4 Fungsi log_user_in()Fungsi log_user_in() mencatat pengguna 2 Fungsi reminder_me()Berikut ini mendefinisikan fungsi ________14______4 _3 Fungsi _4 menyimpan login untuk pengguna selama beberapa hari tertentu. Secara default, ini mengingat login selama 30 hari Fungsi _4 melakukan hal berikut
Fungsi logout()Jika pengguna keluar, selain menghapus sesi, Anda perlu menghapus catatan di tabel 9 dan menghapus cookie 3 Bagaimana cara membuat situs web tetap masuk?6. Arahkan ke situs mana pun yang Anda inginkan untuk tetap masuk. Masukkan nama pengguna dan kata sandi Anda seperti biasa, lalu pilih opsi kotak centang yang disediakan untuk tetap masuk . Itu akan diberi label dengan "Ingat saya," "Tetap masuk" atau kata-kata lain yang menyatakan bahwa memilihnya akan memungkinkan Anda untuk tetap masuk.
Bagaimana cara menambahkan ingat saya ke halaman login saya?Buka Pendaftaran Pengguna > Pengaturan > Umum > Opsi Masuk dan klik 'Aktifkan Ingat Saya' .
Bagaimana cara menerapkan fungsi mengingat saya di PHP?Login PHP dengan fungsi ingat saya . Fungsi reminder me digunakan untuk menyimpan username dan password pada form login yang dimasukkan oleh user. . Langkah 2. Buat tbluser tabel SQL Langkah 3. Buat file konfigurasi database config. php Langkah 4. PHP Cookies untuk mengingat username dan password. . Lihat Demo————————————————– Berapa lama Anda harus membuat pengguna tetap masuk?Dianggap bahwa waktu tunggu menganggur yang lebih lama ( 15-30 menit ) dapat diterima untuk aplikasi berisiko rendah. Di sisi lain, NIST merekomendasikan agar pembuat aplikasi membuat penggunanya mengautentikasi ulang setiap 12 jam dan menghentikan sesi setelah 30 menit tidak aktif. |