私は自分の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を検証する方法はありますか?
わかりました私は解決策を見つけました。
実際、私は気づいていないように常にハッシュされたmdpがありますが、今のところ、logs_inクッキーはこのように構成されています。
%login%|%timeout%|%sessionId%|%passhached%
の代わりに :
%login%|%timeout%|%passhached%
これは、wordpress 4.0以降、およびwp_session_cookieの統合以降、authメソッドは以前と同じですが、変更点が2つだけです。
だから暗号化プロセスのスキームがあります
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と同じである必要があります