บรรลุการใช้งานเข้าสู่ระบบโดยไม่ต้องใช้เซสชัน


9

Wordpress ไม่ใช้เซสชัน

ฉันสงสัยอยู่เสมอว่ากลไกใดที่ WP ใช้เพื่อรักษาสถานะผู้ใช้เมื่อผู้ใช้ไปจากหน้าหนึ่งไปอีกหน้าหนึ่ง

คำตอบ:


12

มันใช้คุกกี้เปล่าและเก็บฝั่งไคลเอ็นต์ข้อมูลสถานะการเข้าสู่ระบบ

ป้อนคำอธิบายรูปภาพที่นี่

+

ป้อนคำอธิบายรูปภาพที่นี่

=

wordpress_7339a175323c25a8547b5a6d26c49afa = yourusername% 7C1457109155% 7C170f103ef3dc57cdb1835662d97c1e13;

คุกกี้และเกลือเหล่านี้มาจากไหน?

เกลืออยู่ในไฟล์ wp-config.php ของคุณ:

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

วลีที่ไม่ซ้ำกันถูกนำมาใช้ในฟังก์ชั่นแฮชที่เข้ารหัสลับ

คุกกี้การรับรองความถูกต้องชื่อที่ถูกเก็บไว้ภายใน AUTH_COOKIE ซึ่งเกิดขึ้นจากการเชื่อม“ wordpress_” กับผลรวม md5 ของ siteurl ตั้งใน default-constants.php นี่เป็นพฤติกรรมเริ่มต้นและสามารถแทนที่ได้จากภายในไฟล์กำหนดค่าของคุณโดยการตั้งค่าคงที่บางส่วนล่วงหน้า

คุกกี้การรับรองความถูกต้องเป็นการรวมตัวกันของชื่อผู้ใช้การประทับเวลาจนกว่าคุกกี้การรับรองความถูกต้องจะถูกต้องและ HMAC ซึ่งเป็นแฮชที่มีรหัสแบบเอนเอียงสำหรับผู้ที่ดึง TL; DR ในตอนนี้ ตัวแปรสามตัวถูกต่อกันกับไพพ์อักขระ |

นี่คือวิธีการสร้าง HMAC:

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

ปลอดภัยไหม

จากบทความนี้ซึ่งข้อมูลส่วนใหญ่ในคำตอบนี้จะใช้แฮ็กเกอร์ประมาณหนึ่งสัปดาห์ในการส่งคำร้องขอ 30 วินาทีต่อวินาทีหากพวกเขารู้ว่าวลีเฉพาะของคุณคืออะไรและ 200,000,000,000,000,000,000,000,000,000,000


คริส เซสชันไม่เหมือนกันทุกประการใช่หรือไม่ เซสชั่นต้องการคุกกี้บนเว็บไซต์ของลูกค้าและเซิร์ฟเวอร์ใช้เพื่อระบุผู้ใช้ที่จะจัดการกับ ฉันไม่เห็นความแตกต่างระหว่างการนำไปใช้กับเซสชันและสิ่งนี้
ค่าเฉลี่ย Joe

2
ทันใดนั้นฉันก็หิว
Kevin

2
PHP เซสชั่นจัดเก็บและติดตามข้อมูลการเข้าสู่ระบบภายใน $ _SESSION super global เซสชันหมดอายุเมื่อคุณปิดเบราว์เซอร์ คุกกี้ WordPress Auth ใช้งานได้ยาวนานกว่าหลายวันหรือหลายสัปดาห์ ดู: tuxradar.com/practicalphp/10/1/0
Chris_O

0

คุกกี้เป็นเพียงแหล่งจัดเก็บข้อมูลเซสชันของลูกค้า ... WordPress Cookies

อันที่จริงมีคุกกี้หนึ่งตัวที่ไม่มีเซสชัน แต่ไม่มีเซสชันที่ไม่มีคุกกี้


ฉันเกรงว่าคุณผิดไปแล้ว wordpress ไม่ได้ใช้งานเลย
ค่าเฉลี่ย Joe

คุกกี้ PHP เป็นส่วนหนึ่งของเซสชัน PHP แม้ว่า WP อาจไม่ใช้เซสชันฝั่งเซิร์ฟเวอร์สำหรับการจัดเก็บข้อมูลเซสชัน
Martin Zeitler

ฉันไม่แน่ใจว่าคุณหมายถึงอะไร ในการใช้เซสชันใน php คุณจะต้องเปิดใช้งานเซสชันที่ด้านบนของหน้าเว็บโดยใช้session_start()อย่างชัดเจน ตอนนี้เห็นได้ชัดว่า wordpress ไม่ได้มีsession_start()ที่ใดก็ได้ในแกน ดูว่าฉันสับสนกับความคิดเห็นล่าสุดของคุณที่ไหน?
ค่าเฉลี่ย Joe

เป็นเพียงหลักการพื้นฐานของเซสชัน PHP ... session_start () เปิดใช้งานการจัดเก็บข้อมูลฝั่งเซิร์ฟเวอร์ในขณะที่ setcookie () เปิดใช้งานการจัดเก็บข้อมูลฝั่งไคลเอ็นต์ของข้อมูลเซสชัน บางทีแค่กำจัดความคิดที่ว่าเซสชันและคุกกี้เป็นสิ่งที่แตกต่างอย่างสิ้นเชิง - ความแตกต่างที่แท้จริงเพียงอย่างเดียวคือที่เก็บสินค้า
Martin Zeitler
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.