đạt được thực hiện đăng nhập mà không cần sử dụng phiên


9

Wordpress không sử dụng phiên.

Tôi luôn tự hỏi WP sử dụng cơ chế nào để duy trì trạng thái người dùng khi người dùng đi từ trang này sang trang khác?

Câu trả lời:


12

Nó sử dụng cookie trần và lưu trữ phía khách hàng thông tin trạng thái đăng nhập.

nhập mô tả hình ảnh ở đây

+

nhập mô tả hình ảnh ở đây

= =

wordpress_7339a175323c25a8547b5a6d26c49afa = tên người dùng của bạn% 7C1457109155% 7C170f103ef3dc57cdb1835662d97c1e13;

Trường hợp tất cả các cookie và muối đến từ đâu?

Muối có trong tệp wp-config.php của bạn:

/**#@+
 * 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');

Các cụm từ duy nhất được sử dụng trong hàm băm mật mã

Cookie xác thực, tên của nó được lưu trữ bên trong AUTH_COOKIE, được hình thành bằng cách ghép nối Word wordpress_ với tổng md5 của trang web được đặt trong default-constants.php. Đây là hành vi mặc định và có thể được ghi đè từ bên trong tệp cấu hình của bạn, bằng cách thiết lập một số hằng số trả trước.

Cookie xác thực ghép nối tên người dùng, dấu thời gian cho đến khi cookie xác thực hợp lệ. Và một HMAC, là loại băm thiên vị khóa cho những người đã rút TL; DR ngay bây giờ. Ba biến được nối với ký tự ống |.

Đây là cách thức xây dựng HMAC:

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

Điều này có an toàn không?

Theo bài viết này , nơi hầu hết các thông tin trong câu trả lời này xuất phát từ việc một hacker sẽ mất khoảng một tuần để gửi 30 yêu cầu nếu họ biết cụm từ duy nhất của bạn là gì và khó hơn 200.000.000.000.000.000.000.000.000.000 lần nếu khóa của bạn là duy nhất.


Chris. Không phải phiên làm chính xác như nhau sao? Phiên yêu cầu cookie trên trang web của máy khách và máy chủ sử dụng để xác định người dùng mà nó đang giao dịch. Tôi không thấy sự khác biệt giữa triển khai dựa trên phiên và điều này.
Trung bình Joe

2
Tôi bỗng đói bụng.
Kevin

2
Phiên PHP lưu trữ và theo dõi thông tin đăng nhập bên trong siêu $ _SESSION toàn cầu. Một phiên hết hạn khi bạn đóng trình duyệt của bạn. Cookie WordPress Auth tồn tại trong nhiều ngày hoặc thậm chí nhiều tuần. Xem: tuxradar.com/prrealphp/10/1/0
Chris_O

0

Cookies chỉ là nơi lưu trữ dữ liệu phía máy khách ... Cookies WordPress

Trong thực tế, người ta có thể có cookie mà không có phiên, nhưng không có phiên nào không có cookie.


Tôi sợ bạn đã chết sai về điều đó. wordpress hoàn toàn không sử dụng phiên.
Trung bình Joe

Cookie PHP là một phần của phiên PHP - ngay cả khi WP có thể không sử dụng phiên phía máy chủ để lưu trữ dữ liệu phiên (để tương thích với một số lưu trữ được chia sẻ tào lao).
Martin Zeitler

Tôi không chắc ý của bạn là gì Để sử dụng phiên trong php, bạn phải bật phiên ở đầu trang bằng cách sử dụng session_start()rõ ràng. Bây giờ, rõ ràng, wordpress không có session_start()bất cứ nơi nào trong cốt lõi của nó. Xem nơi tôi đang bối rối bởi bình luận cuối cùng của bạn?
Trung bình Joe

Đó chỉ là các nguyên tắc cơ bản của các phiên PHP ... mà session_start () cho phép lưu trữ phía máy chủ trong khi setcookie () cho phép lưu trữ dữ liệu phía máy khách. Có lẽ chỉ cần loại bỏ ý tưởng rằng phiên và cookie là một cái gì đó hoàn toàn khác nhau - sự khác biệt thực sự duy nhất là vị trí lưu trữ.
Martin Zeitler
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.