Cookies 我可以在joomla cookie中取消加密密码吗

Cookies 我可以在joomla cookie中取消加密密码吗,cookies,joomla,Cookies,Joomla,如果用户在登录时选中“记住我”,Joomla会在本地cookie中存储密码。 然后,在成功登录时运行此代码 if (!in_array(false, $results, true)) { // Set the remember me cookie if enabled. if (isset($options['remember']) && $options['remember']) {

如果用户在登录时选中“记住我”,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中填充密码字段


我的问题是如何做到这一点..真正的clear密码不是保存在users表上,而是保存在MD5哈希表上。因此,joomla必须从这个cookie中保存密码。

根据我对joomla中如何进行身份验证的理解!工作原理是这样的:

  • 您需要填写用户/密码
  • 它们通过身份验证插件进行检查
  • 如果成功,将创建并存储会话(通常在数据库中),会话id也将存储为cookie
  • 只要会话没有过期,并且您使用相同的浏览器打开Joomla,您基本上是自动验证的

所以我真的怀疑乔姆拉!将所有密码存储在cookie中。密码也会加密存储。乔姆拉!无法知道原始密码是什么。

不,它不能是双向的:您只需存储user+pass的组合($credentials是一个包含密钥“username”和“password”的数组),我假设Joomla将非常相同的值保存到数据库中,“记住我”只是检查存储的值(加密)与cookie相同(也是加密的)


如果应用相同的序列,两个值将匹配(正如您看到的,还有一个与网站私钥的散列)。

我发现joomla确实将密码值作为加密(2路)保存在cookie中,如果您选择“记住我”,那么它会尝试让您保持登录,或者自动登录。这适用于您拥有自己的笔记本电脑等情况,我们希望人们不要在咖啡机上使用它。Joomla只在数据库中存储哈希密码。我找不到会话中存储的密码的任何证据。至于凭证数组,它是肯定的,这是他们可以在登录后设置为null的,因为它在不再需要后存在于内存中。密码是使用php在服务器上检查的(正如您所说的插件或其他),但它都是php。会话是在不保存密码的数据库上创建的,但如果您选择记住密码,则密码将以双向加密的方式存储在cookie中。这是您唯一一次获得自动身份验证。