전자세금계산서 마이페이지 고객지원센터
고객지원업무안내
질문하기
   
활성화 전체검색 활성화 호스팅 활성화 도메인 활성화 프로그램 활성화 회원정보 활성화 메일 활성화 서버/PG연동 활성화 부가서비스 활성화 일반
제목 (title) php 버전업으로 인한 알지보드 패스워드부분 설정...
카테고리 (category) 프로그램
첨부파일 (file) 파일없음

최근 php 취약점을 이용한 헤킹이나 인덱스 파일 변조등의 피해가 있따르고 있습니다...

현재 php 4.3.10 버전으로 업데이트 되있는 상태이며...

버전업으로 인한 알지보드 사용자분들의.. 패스워드부분 처리 오류에 대한 소스수정을

아래와 같이 하시기 바랍니다...

알지보드 질문답변 게시판 내용중 일부 입니다...

http://rgboard.com/rgboard/view.php?&bbs_id=bug&page=&doc_num=226

PHP 5에서 get_password_str함수에 대단한 버그가 있습니다. 간단히 말하면 암호를 만드는 알고리즘에 정상적으로 동작 하지 않는다고 말 할 수 있는데... 제가 운영중인 서버를 업그레이드 하면서 PHP 4에서 PHP 5로 올리게 되었는데... DB쪽에서 데이터를 얻어오는데는 문제가 없었고 그 데이터와 get_password_str로 암호화된 데이터를 비교 하는 과정에서 문제가 발생 해서 디버깅차 get_password_str로 암호화된 데이터의 리턴값을 출력 하도록 했습니다. 그러니 같은 내용을 입력 하더라도 DB에 저장된 내용(암호화된)과는 전혀 다른 문자열이 출력 됩니다. 또, 비슷한 형식의 문자열을 넣으면(한두글자 정도 다른) 암호화된 내용(함수 반환값)이 같습니다... 그래서 이전의 DB내용과의 처리가 제대로 처리 되지 않아 제가 운영하는 페이지는 get_password_str함수를 아래와 같이 수정하여 정상적으로 사용 하고 있고 현제 이에 제시한 URL은 테스트 페이지 입니다. 디버깅을 위하여 mb_login.php를 수정 해 놓겠습니다.
-- get_password_str () --
// 문자열을 mysql password함수를 이용하여 암호화 한다.
function get_password_str($pass) { /*
// mysql 4.1.0 부터 passowrd 함수의 값이 무작위로 변경되어
// 기존 password 함수와 동일한 알고리즘의 코드로 바뀌었다.
$nr = 1345345333;
$add = 7;
$nr2 = 0x12345671;

$size = strlen($pass);
for($i=0;$i<$size;$i++)
{
// skipp space in password
if($pass[$i] == ' ' || $pass[$i] == '\t') continue;
$tmp = ord($pass[$i]);
$nr ^= ((($nr & 63)+$add)*$tmp) + ($nr << 8);
$nr2 += ($nr2 << 8) ^ $nr;
$add += $tmp;
}
$result1=$nr & ((1 << 31) -1); // Don't use sign bit (str2int)
$result2=$nr2 & ((1 << 31) -1);
$result = sprintf("%08x%08x",$result1,$result2);
return $result;
*/
global $dbcon;
// mysql 4.1 부터 password 함수가 old_password 로바뀌었다.
$rs = query("SELECT old_password('$pass')",$dbcon);
$tmp=mysql_fetch_row ($rs);
mysql_free_result($rs);
return $tmp[0];

}
-- End of Function --
위와 같이 하면 함수 내부의 알고리즘을 사용 하는 대신, old_password 함수를 DB서버에 보내어 그 데이터를 받아 옴으로써 올바른 암호화 문자열을 얻을 수 있겠지요. 그것에 대해서 응용 할 수 있도록 함수 자체에 주석 처리 되어 들어 있는 부분의 수적을 해제하고 약간 수정한 다음 위의 암호화 알고리즘이 있는 부분을 전부 다 주석으로 감았 습니다. (MySQL 버번이 4.1.7이라서 old_password를 사용 했습니다)

테스트 URL에서 해 보셔야 할 것은 다음과 같습니다.
우선 테스트 용으로 sysop를 만들어 두었습니다.
암호는 (이게 중요하겠죠?) lys88입니다. 그러나 lys44등을 입력 해도 로그인이 됩니다. 결론적으로 lys88의 암호화 된 값이나 lys44의 암호화된 값이 같다는 소리가 되겠죠? 이런 식이다 보니 정상적인 암호 처리가 되지를 않는것 같습니다. 왜 그런지 모르지만 PHP5에서 get_password_str함수의 알고리즘을 정상적으로 처리 할 수 없는것 같습니다

번호 카테고리 제목 조회
171 메일 프리미엄 웹메일호스팅, 무제한 웹메일 아웃룩/모바일 설정 메뉴얼 0
170 도메인 KR도메인 만료에따른 말소일(1개월>30일) 변경안내 0
169 메일 프리미엄 웹메일호스팅, 무제한 웹메일 호스팅 사용자 메뉴얼 0
168 메일 프리미엄 웹메일호스팅, 무제한 웹메일 호스팅 관리자 메뉴얼 0
167 도메인 도메인 등록/ 연장/ 정보변경 처리 여부 확인 방법 0
166 메일 아이폰에서 웹메일 연동 시키는 방법 입니다. 0
165 메일 안드로이드 스마트폰에서 웹메일 연동 시키는 방법 입니다. 0
164 호스팅 PUTTY 로 접속하여 계정 패스워드 직접 변경방법 0
163 호스팅 .htaccess 활용방법 0
162 도메인 도메인 등록증 발급 요령 0
이전 1 2 3 4 5 다음
 
메일 문의하기 비회원이시거나 로그인을 하실 수 없다면 메일로 문의해주세요
문의메일주소 : webmaster@mireene.com
비밀번호 찾기 아이디 찾기 회원탈퇴 하기 서비스 환불 절차 서비스 변경 결제방법 기타 서비스 결제
         
 
             
사업자정보확인 지도보기 위로
미리내 모바일 홈페이지 무료 qr코드