2013-01-24 1 views
0

Joomla는 사용자가 로그인 할 때 'remember me'상자를 선택하면 로컬 쿠키 안에 암호를 저장합니다. 이 코드는 성공적인 로그인이 이루어질 때 실행됩니다.joomla 쿠키에서 암호를 암호화 해제 할 수 있습니까?

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; 
     } 

참고 $ 자격 증명에는 [ 'password'] 키 값이 있으며 로그인 양식의 암호가 포함되어 있습니다. 이렇게 암호화 된 경우 시스템이이를 역전하고 쿠키의 암호 필드를 채우는 2 가지 방법이어야합니다.

내 질문은 어떻게 할 수 있습니다. 진짜 분명 비밀 번호는 사용자 테이블에 저장되지 않지만 MD5는 해시 된 것입니다. 따라서 joomla가 암호를 저장할 수있는이 쿠키에 있어야합니다.

답변

1

내 이해에서 Joomla!의 인증 방법! 작동, 그것은 다음과 같이 진행됩니다

  • 당신은 사용자/암호를 입력
  • 그들은 인증 플러그인
  • 세션이 생성되고 (보통 데이터베이스)에 저장되어 성공적으로 만약에 의해 확인 얻을 및 또한 세션 ID는 쿠키로 저장됩니다.
  • 세션이 만료되지 않았고 동일한 브라우저에서 Joomla를 열면 기본적으로 자동으로 인증됩니다.

그래서 나는 Joomla! 쿠키에 암호를 저장합니다. 또한 암호는 암호화되어 저장됩니다. 그래서 Joomla! 원래 암호가 무엇인지 알 수있는 방법이 없습니다.

+0

암호는 서버에서 php (플러그인이라고 말한 것처럼)하지만 모든 PHP는 확인합니다. 세션은 암호를 보유하지 않은 데이터베이스에서 작성되지만 기억하도록 선택하면 암호는 양방향으로 암호화 된대로 쿠키에 저장됩니다. 이것은 자동 인증을받을 유일한 시간입니다. – landed

0

아니요. 양방향이어서는 안됩니다. 사용자 + 패스 ($ 자격 증명은 '사용자 이름'과 '비밀번호'키가있는 배열입니다.)을 저장하기 만하면 Joomla가 데이터베이스 및 '기억 해요'는 저장된 값 (암호화 됨)이 쿠키 (암호화 됨)와 동일한 지 확인합니다.

동일한 시퀀스가 ​​적용되면 두 값이 일치합니다 (웹 사이트의 개인 키가 포함 된 해시가 있음).

+0

나는 joomla가 쿠키에 암호화 된 (2 가지 방법) 암호 값을 저장한다는 것을 발견했다. 나를 기억한다면 - 당신이 로그인을 유지하려고 시도하거나 자동 로그인하는 것을 시도한다. 이것은 자신이 소유 한 시나리오를위한 것이다. 노트북 등 우리는 사람들이 카페 기계에서 이것을 사용하지 않기를 바랍니다. Joomla는 해시 된 암호 만 db에 저장합니다. 세션에 저장된 비밀번호의 증거를 찾지 못했습니다. 자격 증명 배열은 네가 그렇습니다. 이것은 더 이상 필요하지 않게 된 후에 메모리에 존재하므로 로그인 후에 널 (null)로 설정할 수 있습니다. – landed

관련 문제