Katakanlah nama tabel database untuk cookie persisten adalah pcookies dengan kolom berikut:
- cookie_id (CHAR)
- id_pengguna (INT)
- kedaluwarsa (DATETIME)
- garam (CHAR)
Langkah-langkah pembuatan cookie:
- Setelah login berhasil, buat catatan cookie di database dengan id unik. Anda dapat membuatnya dengan hash_hmac('sha512', $token, $salt) di mana $token=uniqid($user_id, TRUE) dan $salt=md5(mt_rand()).
- Simpan 'user id', 'expiration time' dan 'salt' bersama dengan 'cookie id' di database.
- Simpan 'cookie id' dan 'token' di cookie.
Langkah autentikasi:
- Jika ada cookie persisten yang ditemukan, periksa dulu apakah record tersebut tersedia di database atau tidak.
- Jika catatan tersedia, periksa apakah cookie kedaluwarsa atau tidak.
- Jika cookie tidak kedaluwarsa, validasi id cookie dengan $cookie_id ==hash_hmac('sha512',$token_from_cookie,$salt_from_db).
- Setelah cookie divalidasi, hapus dari database dan buat cookie baru sesuai dengan langkah pembuatan cookie di atas.
- Jika cookie ditemukan tidak valid, hapus cookie dari perangkat dan hapus semua catatan cookie lain dari pengguna dari database, perhatikan penggunaan tentang upaya pencurian dan lanjutkan ke proses login manual.
Catatan:
- Saat sesi tersedia, abaikan pemeriksaan cookie.
- Setelah logout, hapus cookie bersama dengan catatan database.
- Jangan pernah izinkan pengguna untuk menjalankan permintaan sensitif seperti perubahan sandi atau melihat informasi kartu kredit dari login cookie tetap. Minta kata sandi untuk masuk dan tambahkan tanda di sesi untuk mengizinkan semua operasi selanjutnya.