web-dev-qa-db-ja.com

ユーザーがワードプレス4.0以降、ワードプレスが別のアプリからログインしているかどうかを確認する

私は自分のNode.jsアプリにユーザークッキーが有効かどうかを確認する方法を実装しようとしています。私は物事をとてもよく説明してくれるインターネット上の投稿を見つけました、しかし、私がNode.jsのためのWordPress-authモジュールでそれを実装しようとするとき、私はそれが働いていないことがわかりました。

いくつかの検索の後、私は何らかの理由でWordPress 4.0から見つけました。

  • 今、logs_in cookie名がまだMD5でハッシュされている場合、ハッシュされた塩味のパスワードは今sha256(またはsha1なら不可能)暗号化、WordPress関数wp_generate_auth_cookie()のコードのこの部分を考慮して:

    // If ext/hash is not present, compat.php's hash_hmac() does not support sha256.
    $algo = function_exists( 'hash' ) ? 'sha256' : 'sha1';
    $hash = hash_hmac( $algo, $user->user_login . '|' . $expiration . '|' . $token, $key );
    
  • よくわかりませんが、WordPress 4.0以降のコードで見たように、ログインしたsaltはもう使用されていませんが、以下のようにWP_Session_Tokensで定義されているtokenの使用法があります。

    $manager = WP_Session_Tokens::get_instance( $user_id );
    $token   = $manager->create( $expiration );
    

だから私は知りたいのですが:wordpress 4.0からlogin_in cookieを検証する方法はありますか?

1
Nicolas Frbezar

わかりました私は解決策を見つけました。

実際、私は気づいていないように常にハッシュされたmdpがありますが、今のところ、logs_inクッキーはこのように構成されています。

%login%|%timeout%|%sessionId%|%passhached%

の代わりに :

%login%|%timeout%|%passhached%

これは、wordpress 4.0以降、およびwp_session_cookieの統合以降、authメソッドは以前と同じですが、変更点が2つだけです。

  • sessionidがクッキーとキー計算に導入されています
  • 記録されたクッキーの暗号化はsha256か、不可能ならばsha1です。

だから暗号化プロセスのスキームがあります

KEY = md5_HMAC(%login%|%caracter 8-12 of the passhached in database%|%timeout%|%sessionId% , LOGGED_IN_KEY.LOGGED_IN_SALT);

RESULT = sha256_HMAC(%login%|%timeout%|%sessionId% , KEY);
// RESULT = sha1_HMAC(%login%|%timeout%|%sessionId% , KEY); only if sha256 is not supported

そして今のところ、接続を承認するためには、logged_in_cookieのパスハッチはRESULTと同じである必要があります

1
Nicolas Frbezar