セッションを使用せずにログインを実装する


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_」と、default-constants.phpで設定されたsiteurlのmd5合計を連結することによって形成されます。これはデフォルトの動作であり、いくつかの定数を事前に設定することにより、構成ファイル内からオーバーライドできます。

認証Cookieは、ユーザー名の連結、認証Cookieが有効になるまでのタイムスタンプ、およびHMACです。これは、現在TL; DRをプルした人​​のためのキーバイアスハッシュの一種です。3つの変数はパイプ文字|で連結されます。

HMACの構成方法は次のとおりです。

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

これは安全ですか?

この回答のほとんどの情報がこの記事から得られたこの記事によると、ハッカーがあなたの一意のフレーズが何であるかを知っていれば、1秒間に30リクエストを送信するのに力ずくでかかり、キーが一意であると200,000,000,000,000,000,000,000,000,000,000倍困難になります。


クリス。セッションはまったく同じではありませんか?セッションはクライアントサイトにCookieを必要とし、サーバーはそれを使用して、処理しているユーザーを識別します。セッションベースの実装とこれの違いが何であるかわかりません。
平均ジョー

2
急に腹が減った。
ケビン

2
PHPセッションは、$ _ SESSIONスーパーグローバル内のログイン情報を保存および追跡します。ブラウザを閉じるとセッションが期限切れになります。WordPressの認証Cookieは、さらに長い日数週間、または数週間も持続します。参照:tuxradar.com/practicalphp/10/1/0
Chris_O

0

Cookieは、セッションデータのクライアント側のストレージにすぎません... WordPress Cookie

実際、セッションなしでCookieを使用できますが、Cookieなしでセッションを使用することはできません。


私はあなたがその点で完全に間違っていると思います。wordpressはセッションをまったく使用しません。
平均ジョー

PHP CookieはPHPセッションの一部です-WPがセッションデータのストレージにサーバー側のセッションを利用しない場合でも(一部の不安定な共有ホスティングとの互換性を保つため)。
Martin Zeitler、2012年

どういう意味かわかりません。PHPでセッションを使用するには、session_start()明示的にを使用して、ページの上部でセッションを有効にする必要があります。今、明らかに、ワードプレスはsession_start()その中心にどこにもありません。あなたの最後のコメントで私が混乱しているところを見ますか?
平均ジョー

これは、PHPセッションの基本的な原則に過ぎません... session_start()はサーバー側のストレージを有効にし、setcookie()はセッションデータのクライアント側のストレージを有効にします。セッションとCookieがまったく異なるものであるという考えを取り除くだけかもしれません-唯一の本当の違いは保管場所です。
Martin Zeitler
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.