досягнення реалізації входу без використання сеансів


9

Wordpress не використовує сеанси.

Мені завжди було цікаво, який механізм використовує WP для підтримки стану користувача, коли користувач переходить зі сторінки на сторінку?

Відповіді:


12

Він використовує голі файли cookie та зберігає клієнтську інформацію про стан входу.

введіть тут опис зображення

+

введіть тут опис зображення

=

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');

Унікальні фрази використовуються в криптографічній хеш-функції

Файл cookie для автентифікації, ім'я якого зберігається всередині AUTH_COOKIE, утворюється шляхом об'єднання "wordpress_" з md5 сумою siteurl, встановленою в default-constants.php. Це поведінка за замовчуванням, і її можна змінити всередині вашого конфігураційного файлу, встановивши наперед деякі константи.

Файл cookie аутентифікації - це об'єднання імені користувача, часова марка, до якої дійсний файл cookie автентифікації. І 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 разів важче, якщо ваші ключі унікальні.


Кріс. Хіба сеанси не роблять точно так само? Для сеансів потрібен файл cookie на клієнтському сайті, а сервер використовує його для визначення користувача, з яким він має справу. Я не бачу, в чому різниця між реалізацією на основі сеансу і цим.
Середній Джо

2
Я раптом голодний.
Кевін

2
PHP сесії зберігають та відстежують інформацію про вхід у супер глобальний $ _SESSION. Сеанс закінчується, коли ви закриєте веб-переглядач. Печиво WordPress Auth триває набагато довші дні або навіть тижні. Дивіться: tuxradar.com/practicalphp/10/1/0
Chris_O

0

Файли cookie - це просто зберігання даних сеансу на стороні клієнта ... WordPress Cookies

Насправді, можна мати файли cookie без сеансів, але без файлів cookie.


Я боюся, що ви в цьому неправі. wordpress взагалі не використовує сеанси.
Середній Джо

Файли cookie PHP є частиною сеансів PHP - навіть якщо WP, ймовірно, не може використовувати сеанси на сервері для зберігання даних сеансів (для того, щоб вони були сумісні з деякими хитрими спільними хостингами).
Мартін Цайтлер

Я не впевнений, що ти маєш на увазі під цим. Щоб використовувати сеанси в php, вам потрібно ввімкнути сеанси вгорі сторінки, використовуючи session_start()явне використання . Тепер, очевидно, wordpress не має session_start()ніде в своїй основі. Бачите, де мене бентежить ваш останній коментар?
Середній Джо

Це лише основні принципи сеансів PHP ... що session_start () дозволяє зберігати на сервері, в той час як setcookie () дозволяє зберігати дані сеансу на стороні клієнта. Можливо, просто позбутися думки про те, що сеанси та файли cookie - це щось зовсім інше - єдиною реальною різницею є місце зберігання.
Мартін Цайтлер
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.