ログイン時にユーザーが [remember me] ボックスをオンにすると、Joomla はローカル Cookie 内にパスワードを保存します。このコードは、ログインが成功したときに実行されます。
if (!in_array(false, $results, true))
{
// Set the remember me cookie if enabled.
if (isset($options['remember']) && $options['remember'])
{
// Create the encryption key, apply extra hardening using the user agent string.
$privateKey = self::getHash(@$_SERVER['HTTP_USER_AGENT']);
$key = new JCryptKey('simple', $privateKey, $privateKey);
$crypt = new JCrypt(new JCryptCipherSimple, $key);
$rcookie = $crypt->encrypt(serialize($credentials));
$lifetime = time() + 365 * 24 * 60 * 60;
// Use domain and path set in config for cookie if it exists.
$cookie_domain = $this->getCfg('cookie_domain', '');
$cookie_path = $this->getCfg('cookie_path', '/');
setcookie(self::getHash('JLOGIN_REMEMBER'), $rcookie, $lifetime, $cookie_path, $cookie_domain);
}
return true;
}
$credentials には ['password'] キー値があり、ログイン フォームからのパスワードが含まれていることに注意してください。したがって、これが暗号化されている場合、システムがこれを逆にして、Cookie からパスワード フィールドにデータを入力するには、双方向でなければなりませんか?
私の質問は、これをどのように行うことができるかということです.実際のクリアパスワードはユーザーテーブルに保存されず、MD5 ハッシュされたものに保存されます。したがって、joomla がパスワードを保存できるのは、この Cookie からである必要があります。