mencapai implementasi login tanpa menggunakan sesi

9

Wordpress tidak menggunakan sesi.

Saya selalu bertanya-tanya mekanisme apa yang digunakan WP untuk mempertahankan status pengguna saat pengguna berpindah dari halaman ke halaman?

Joe rata-rata
sumber

Jawaban:

12

Ini menggunakan cookie kosong dan menyimpan sisi klien informasi negara login.

masukkan deskripsi gambar di sini

+

masukkan deskripsi gambar di sini

=

wordpress_7339a175323c25a8547b5a6d26c49afa = nama pengguna Anda% 7C1457109155% 7C170f103ef3dc57cdb1835662d97c1e13;

Dari mana semua cookie dan garam ini berasal?

Garam ada di file wp-config.php Anda:

/**#@+
 * Authentication Unique Keys and Salts.
 *
 * Change these to different unique phrases!
 * You can generate these using the {@link https://api.wordpress.org/secret-key/1.1/salt/ WordPress.org secret-key service}
 * You can change these at any point in time to invalidate all existing cookies. This will force all users to have to log in again.
 *
 * @since 2.6.0
 */
define('AUTH_KEY',         'put your unique phrase here');
define('SECURE_AUTH_KEY',  'put your unique phrase here');
define('LOGGED_IN_KEY',    'put your unique phrase here');
define('NONCE_KEY',        'put your unique phrase here');
define('AUTH_SALT',        'put your unique phrase here');
define('SECURE_AUTH_SALT', 'put your unique phrase here');
define('LOGGED_IN_SALT',   'put your unique phrase here');
define('NONCE_SALT',       'put your unique phrase here');

Frase unik digunakan dalam fungsi hash kriptografis

Cookie otentikasi, nama yang disimpan di dalam AUTH_COOKIE, yang dibentuk dengan menyatukan “wordpress_” dengan jumlah md5 dari siteurl yang diset di default-constants.php. Ini adalah perilaku default dan dapat diganti dari dalam file konfigurasi Anda, dengan menyiapkan beberapa konstanta di muka.

Cookie otentikasi gabungan dari nama pengguna, cap waktu hingga cookie cookie valid., Dan HMAC, yang merupakan semacam hash bias kunci bagi mereka yang menarik TL; DR sekarang. Tiga variabel disatukan dengan karakter pipa |.

Inilah cara HMAC dibangun:

$hash = hash_hmac('md5', $username . '|' . $expiration, wp_hash($username . substr($user->user_pass, 8, 4) . '|' . $expiration, $scheme));

Apakah ini aman?

Menurut artikel ini di mana sebagian besar informasi dalam jawaban ini berasal dari itu akan mengambil hacker sekitar seminggu untuk brute force dalam mengirim 30 permintaan per detik jika mereka tahu apa frasa unik Anda dan 200.000.000.000.000.000.000.000.000.000.000.000.000.000.000.000 lebih sulit jika kunci Anda unik.

Chris_O
sumber
Chris Bukankah sesi sama persis? Sesi memerlukan cookie di situs klien dan server menggunakannya untuk mengidentifikasi pengguna yang dihadapinya. Saya tidak melihat perbedaan antara implementasi berbasis sesi dan ini.
Rata
2
Tiba-tiba saya lapar.
Kevin
2
Sesi PHP menyimpan dan melacak informasi masuk di dalam $ _SESSION super global. Sesi berakhir ketika Anda menutup browser. Cookie WordPress Auth berlangsung selama berhari-hari lebih lama atau bahkan berminggu-minggu. Lihat: tuxradar.com/practicalphp/10/1/0
Chris_O
0

Cookie hanyalah penyimpanan data sesi sisi klien ... Cookie WordPress

Bahkan, seseorang dapat memiliki cookie tanpa sesi, tetapi tidak ada sesi tanpa cookie.

Martin Zeitler
sumber
Saya khawatir Anda salah dalam hal itu. wordpress tidak menggunakan sesi sama sekali.
Rata
Cookie PHP adalah bagian dari sesi PHP - bahkan jika WP mungkin tidak menggunakan sesi sisi server untuk penyimpanan data sesi (agar kompatibel dengan beberapa host bersama jelek).
Martin Zeitler
Saya tidak yakin apa yang Anda maksud dengan itu. Untuk menggunakan sesi dalam php, Anda harus mengaktifkan sesi di bagian atas halaman Anda dengan menggunakan session_start()secara eksplisit. Sekarang, jelas, wordpress tidak memiliki session_start()inti. Lihat di mana saya menjadi bingung dengan komentar terakhir Anda?
Rata
Itu hanya prinsip dasar sesi PHP ... session_start () memungkinkan penyimpanan sisi server sementara setcookie () memungkinkan penyimpanan data sesi sisi klien. Mungkin singkirkan ide bahwa sesi dan cookie adalah sesuatu yang sama sekali berbeda - satu-satunya perbedaan nyata adalah lokasi penyimpanan.
Martin Zeitler