GR Board 2 Documents

[기본지식] 계정을 옮겼는데 비밀버호가 모두 틀리다고 나온다면? (old_passwords)

좋아
  • 2010.12.02 14:57:28
  • hit: 6321
  • good: 106
php에서 아래와 같이 출력을 해본다.

$test = mysql_fetch_array(mysql_query("select password('a') as pass"));
echo $test['pass'];

이렇게 나온다면 41바이트 암호화고
*667F407DE7C6AD07358FA38DAED7828A72014B4E

이렇게 나온다면 16바이트 암호화다.
60671c896665c3fa


백업받은 db파일의(sql파일) 암호부분과 사용하고 있는 호스팅의 암호화 버전을 비교 해보고 틀리다면
디비 복구를 해도 암호가 전부 틀리다고 나온다.

실제로 얼마전에 호스팅을 마루호스팅으로 옮겼는데 mysql 5.0 에서 16바이트 암호화를 사용하고 있었다. 이전에 사용
하던 호스팅에서는 41바이트 암호화를 사용하고 있었고. 16바이트는 mysql.3.0 버전인가 에서 사용 하던걸로 알고 있는데..(아닌가??)
서버 설정에서 old_passwords를 활성화 하면 예전 버전으로 동작한다고 하더라. 아마도 호환성 때문이겠지만 너무 한다는 생각이 드는 것도 사실.

이럴경우 GR보드 에서는 아래처럼 간단히 해결 할 수 있다.
class/common.php 19라인

// DB 접속 함수
function dbConn() {
 global $preRoute;
 include $preRoute.'db_info.php';
 @mysql_query('set old_passwords=0');
 $GLOBALS['dbFIX'] = $dbFIX;
 $this->grTime = $timeDiff;
}


반대로 이전 호스팅에서는 16바이트 였는데 옮긴 호스팅 에서는 41바이트라면

@mysql_query('set old_passwords=1');


---------------
그동안 암호화 같은건 신경도 안쓰고 있었기에 참 난감했는데 검색으로 겨우 알아냈습니다.
modified at 2010.12.02 14:58:17 by 좋아
modified at 2010.12.02 15:02:00 by 좋아
시리니 site 2010.12.02 19:43:09 reply
추천~!
이동규 site 2011.06.07 02:23:49 reply
추가로 포럼에서도 작업을 해주셔야 합니다.
GRForum 디렉터리 > login > index.php 를 엽니다.

'// 로그인 처리' 아래에 다음부분
password = password(''.$password.'')');

을 아래와 같이 수정해주세요.
password = old_password(''.$password.'')');