G4 => G5로 변환 후... 비밀번호 문제입니다.

G4 => G5로 변환 후... 비밀번호 문제입니다.

QA

G4 => G5로 변환 후... 비밀번호 문제입니다.

본문

SIR 회원 여러분, 안녕하세요~


오래동안 벼루었던 G5 업그레이드!!

지난 주말 G4 => G5 로 업그레이드를 하였습니다.


게시물 및 회원 자료는 모두 잘 이전되었습니다.

그런데 문제가 한 가지 발생하였습니다.


회원 로그인이 안됩니다...ㅜ.ㅜ






sir 게시판에서 검색하여 찾아보니... 

아마도 mysql 번전때문에 발생한 문제인거 같았습니다.


DB를 살펴보니 패스워드 부분이 아래 그림과 같이 되어 있더군요.... 


b2d9bdc37c7ee011050fa82d86fb2218_1498470124_0797.jpg
 


그래서 "그누보드5 팁자료실"에 올려진 아래의 관련글을 참조하여 적용을 해보았습니다. 


○관련글 1 : https://sir.kr/g5_tip/839


○관련글 2 : https://sir.kr/g5_tip/3423



그런데... 둘 다 안됩니다...ㅠ,ㅠ


위 글 1, 2와는 다른 문제인가요?





혹시 해결하신 분이나 방법을 아시는 분이 계시다면 도움말씀을 요청드려봅니다.


참고로 서버환경은 PHP 5.2.17, MySQL 5.5.53 입니다.


그럼 편안한 저녁 시간 되십시요~~





이 질문에 댓글 쓰기 :

답변 5

http://www.happyjung.com/lecture/1689   요거도 참고하세요 

해피정님, 도움 말씀 감사합니다.

알려주신 소스 가운데... G5 부분을 적용하니 일단 로그인이 되는 거 같은데...
이상한 점이 3가지 발생되었습니다.

1. 비번을 아무렇게나 입력해도... 로그인이 됩니다.
즉, 비번 매칭 작업이 안되고 그냥 로그인이 막 되는것 같습니다.

2. 회원 정보수정을 클릭하면... 비밀번호 확인을 위해 비번을 다시 입력하는 창이 뜨는데...
거기서는 비밀번호가 먹히지 않습니다.... ㅜ.ㅜ

3.DB에서 g5_member 테이블을 보니 예전 비번 그대로 있습니다.
16바이트가 41바이트로 변경된다고 하셨는데... 변경이 안되는거 같습니다.
1번과 이어지는 현상 같습니다.
비번 매칭이 안되다보니 업데이트가 안되는 거 같아요...

도움 말씀을 다시 부탁드려봅니다~

G4에서 사용하던 비번이 정상적인 G4비번이 아니네요

암호화 한 것이 아닌 입력한 그대로 인것 같군요(Ich<--이것으로 보아)

추측이 맞다면 저런 팁은 적용안됩니다

 

입력한 내용 그대로이면(즉 비번이 무엇인지 확인 가능하면)

g5_member 테이블을 백업해놓은 후 아래 코드를 적용해보세요

주의 : 아래 코드를 한번만 실행해야 합니다

         반드시 회원 테이블을 백업 해둔 후 실행하세요

sql_query("update $g5[member_table] set mb_password=password(mb_password) ");

 

 

 

 

 

 

균이님께서 알려주신 쿼리문을 실행해 보았습니다.

그렇게 하니깐 비번 부분이
*9386DC79A98090542DT2T892D72AF20C8562552F4 등으로 바뀌었음을 확인할 수 있네요~~~ ^.^

그런데 로그인은 여전히 안됩니다.
비번이 틀리다고 나옵니다.....

백업된걸로 다시 복구해야 하나요.....
해피정님 소스도 안되고.. 진퇴양난입니다....ㅜ.ㅜ

균이님의 말씀을 보니 이렇게 수정해보세요

로그인후 비밀번호 변경하는 쿼리를 살짝 수정해보면 어떨까 싶습니다.

 

1. 그누보드5 / bbs / login_check.php  17~18줄

if (!$mb['mb_id'] || !check_password($mb_password, $mb['mb_password'])) {
    alert('가입된 회원아이디가 아니거나 비밀번호가 틀립니다.\\n비밀번호는 대소문자를 구분합니다.');
}

를 다음과 같이 변경

function check_old_password($value) {
    // mysql 4.0x 이하 버전에서는 password() 함수의 결과가 16bytes
    // mysql 4.1x 이상 버전에서는 password() 함수의 결과가 41bytes
    $row = sql_fetch(" select old_password('$value') as pass ");
    return $row[pass];
}
if (!$mb['mb_id'] || (!check_password($mb_password, $mb['mb_password']) && !check_old_password($mb_password, $mb['mb_password']))) {
    alert('가입된 회원아이디가 아니거나 비밀번호가 틀립니다.\\n비밀번호는 대소문자를 구분합니다.');
}
if (check_old_password($mb_password) == $mb[mb_password]) { // 옛날 비밀번호를 새로운 비밀번호로 바꿉니다.
    //$sql = " update ".$g5[member_table]." set mb_password='" . sql_password($mb_password) . "' where mb_id='".$mb_id."' ";
    $sql = " update ".$g5[member_table]." set mb_password='" . password($mb_password) . "' where mb_id='".$mb_id."' ";
    sql_query($sql);

   

해피정님, 도움 말씀 감사합니다.
위에 댓글을 수정했는데요,,,, 못보신거 같아서 다시 올립니다.

일단 조금전에 알려주신 위 소스대로 다시 수정해서 적용하였으나...
아래와 같은 현상이 발생됩니다.



1. 비번을 아무렇게나 입력해도... 로그인이 됩니다.
즉, 비번 매칭 작업이 안되고 그냥 로그인이 막 되는것 같습니다.

2. 회원 정보수정을 클릭하면... 비밀번호 확인을 위해 비번을 다시 입력하는 창이 뜨는데...
거기서는 비밀번호가 먹히지 않습니다.... ㅜ.ㅜ

3.DB에서 g5_member 테이블을 보니 예전 비번 그대로 있습니다.
16바이트가 41바이트로 변경된다고 하셨는데... 변경이 안되는거 같습니다.
1번과 이어지는 현상 같습니다.
비번 매칭이 안되다보니 업데이트가 안되는 거 같아요...

도움 말씀을 다시 부탁드려봅니다~

일단 아래와 같이 수정하면 로그인 체크 안하는 현상은 없어질껍니다.

비밀번호 업데이트가 안된다라.... 음...  그건   bbs/login_check.php 파일에서 수정해야 하려나....

저거로도 충분히 되야 할거 같은데... 음음...


function check_old_password($value) {

// mysql 4.0x 이하 버전에서는 password() 함수의 결과가 16bytes

// mysql 4.1x 이상 버전에서는 password() 함수의 결과가 41bytes

$row = sql_fetch(" select old_password('$value') as pass ");

return $row[pass];

}

if (!$mb['mb_id'] || (!check_password($mb_password, $mb['mb_password']) && !check_old_password($mb_password, $mb['mb_password']))) {

alert('가입된 회원아이디가 아니거나 비밀번호가 틀립니다.\\n비밀번호는 대소문자를 구분합니다.');

} else if (check_old_password($mb_password) == $mb[mb_password]) { // 옛날 비밀번호를 새로운 비밀번호로 바꿉니다.

   //$sql = " update ".$g5[member_table]." set mb_password='" . sql_password($mb_password) . "' where mb_id='".$mb_id."' "; // 16비트 암호화일때

   $sql = " update ".$g5[member_table]." set mb_password='" . password($mb_password) . "' where mb_id='".$mb_id."' "; // 암호화 안된 비밀번호 사용하고 있는 경우

   sql_query($sql); 

}



추가 글을 적어봅니다.   mysql 버전이 무엇인지 먼저 확인해보세요,   mysql 4.1 미만 버전인 경우에는 처리 방법이 다릅니다.

기존 password 를 보니 문득 암호화를 16비트로 저장되는 구형 mysql 을 사용하는것은 아닌가 싶은 생각이 드네요

해피정님, 도움 말씀 감사합니다.

원본 데이터는 Technote 테크노트라는 웹솔루션에서 사용하던 자료였습니다.
원본의 비번을 확인해 보니 13byte 이네요.

테크노트를 G4(Miwit)로 변경 후에 잘 사용하였습니다.
이때 비번 역시 13byte 였네요.

다시 G5로 변경을 했습니다.
G5 의 import 파일을 이용하여 회원 자료 및 게시물을 모두 변환했습니다.

게시물은 이상이 없는데...
회원 로그인이 안되는 문제 때문에 애를 먹고 있습니다.

정리하자면....
technote 7.5  =>  G4(Miwit)  =>  G5(YC5) 순으로 변경되었습니다.

참고로 테크노트는 mysql 5.0.96 환경에서 사용하였습니다.

그리다가 이번에  mysql 5.5.53 으로 업그레이드 하고...
G4로 변환하고... 로그인 잘 되었고....
다시 G5로 변환하였는데.... 로그인이 안됩니다...  ㅜ.ㅜ

이 경우 별도의 비밀번호 변환 작업을 거쳐야 하나요?
그렇다면 제작 의뢰 게시판을 이용해야겠죠?

비밀번호를 암호없이 사용하신건가요?   테크노트 암호방식은 md5 였던가 암튼 구조가 다른것으로 기억하는데...

암튼 이것은 기존 암호화 방식에 대한 것은 암호 업데이트 할때 조건문으로 검증하는 과정을 해야할 듯 싶군요.

miwit 에서 어떤 방식으로 암호화를 한건지를 다시 확인해보세요.

비밀번호 암호화를  mysql password 함수를 사용하지 않고 다른 것으로 사용하는듯 싶습니다.

그것이 무언지를 다시 살펴보시고,  하나씩 분석해봐야 하지 싶습니다.

해피정님, 점심식사는 맛있게 드셨습니까?

https://sir.kr/g4_convert/136

위 글을 보니깐 비밀번호 체계가 달라서 변경이 불가하다고 되어 있습니다.
백업된 자료와 비교해 보니... 테크노트 비번이 그대로 G4로 넘어왔네요.

아무래도 제작의뢰 게시판을 통해야 할거 같습니다...

바쁘실텐데 도움 말씀 감사하구요,
하시는 사업, 잘되시기 바랍니다~

답변을 작성하시기 전에 로그인 해주세요.
전체 163
QA 내용 검색

회원로그인

(주)에스아이알소프트 / 대표:홍석명 / (06211) 서울특별시 강남구 역삼동 707-34 한신인터밸리24 서관 1404호 / E-Mail: admin@sir.kr
사업자등록번호: 217-81-36347 / 통신판매업신고번호:2014-서울강남-02098호 / 개인정보보호책임자:김민섭(minsup@sir.kr)
© SIRSOFT