며칠전(2월18일경)부터 사용자로긴이 안됩니다.

며칠전(2월18일경)부터 사용자로긴이 안됩니다.

QA

며칠전(2월18일경)부터 사용자로긴이 안됩니다.

그누보드5(영카트) 버전

5.4

사용 PHP 버전

5.5.3

본문

- 그누보드 버전

define('G5_VERSION', '그누보드5');
define('G5_GNUBOARD_VER', '5.2.6');

 

- MySQL 버전

Server version: 5.1.73

 

사용자ID와 비번을 맞게 입력해도 bbs/login_check.php 의 

 

include_once('./_common.php');

$g5['title'] = "로그인 검사";

$mb_id       = trim($_POST['mb_id']);
$mb_password = trim($_POST['mb_password']);

if (!$mb_id || !$mb_password)
    alert('회원아이디나 비밀번호가 공백이면 안됩니다.');

$mb = get_member($mb_id);

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

 

그 전에 특별한 작업이 없었고, 몇년간 잘 운영되었었는데, 갑자기 빨간색 부분에서 에러가 나는 것 같습니다.

 

lib/common.lib.php 에 check_password()가 정의되어 있더군요

function get_encrypt_string($str)
{
    if(defined('G5_STRING_ENCRYPT_FUNCTION') && G5_STRING_ENCRYPT_FUNCTION) {
        $encrypt = call_user_func(G5_STRING_ENCRYPT_FUNCTION, $str);
    } else {
        $encrypt = sql_password($str);
    }

    return $encrypt;
}


function check_password($pass, $hash)
{
    $password = get_encrypt_string($pass);
//    $password = old_password($pass);

    return ($password === $hash);
}
 

물론 특정사용자를 php 스크립트로 비번변경하니 로긴은 다시 됩니다만, 디비변경같은 작업이 없었는데도 불구하고 이런 현상이 발생했습니다. 고견 미리 감사합니다.

 

 

이 질문에 댓글 쓰기 :

답변 4

하드 공간 여유있는지 체크해 보세요.

코드 안 만졌는데 로그인 안 되는 경우면 십중팔구 이 문제일 듯 싶네요.

<?php
    include_once('./_common.php');

    $mb_id = "admin"; // 변경하려는 사용자 ID
    $new_password = "your_password"; // 새 비밀번호

    // 그누보드에서 비밀번호는 get_encrypt_string 함수를 이용하여 암호화됩니다.
    // 이 함수는 내부적으로 SHA256을 이용합니다.
    $new_password_hashed = get_encrypt_string($new_password);

    $sql = "UPDATE {$g5['member_table']}
            SET mb_password = '".$new_password_hashed."'
            WHERE mb_id = '".$mb_id."' ";

    sql_query($sql);
?>

요런식으로 강제변경하면 잘 됩니다.

위처럼 변경해서 잘 된 거면 위에 말씀드린 대로 mysql 버전이 달라져서 생긴 문제같네요.
이건 각 사용자들이 패스워드 찾기 이용해 새 패스워드 체계로 직접 바꿔야 할 겁니다.

ssl 인증 도메인 확인해보시기 바랍니다.

<?php
    include_once('./_common.php');

    $mb_id = "admin"; // 변경하려는 사용자 ID
    $new_password = "your_password"; // 새 비밀번호

    // 그누보드에서 비밀번호는 get_encrypt_string 함수를 이용하여 암호화됩니다.
    // 이 함수는 내부적으로 SHA256을 이용합니다.
    $new_password_hashed = get_encrypt_string($new_password);

    $sql = "UPDATE {$g5['member_table']}
            SET mb_password = '".$new_password_hashed."'
            WHERE mb_id = '".$mb_id."' ";

    sql_query($sql);
?>

그런 아이디를 강제적으로 바꾸면 로긴이 정상적으로 됩니다.

혹시 그누버전 업그레이드 하셔는지요 ? 아니면 기존 php 버전을 업그레이드 하셔는지요?  현제상황으로봐서는 버전 업데이트로인한 해싱 암호화차이로  이전암호화를 반영이 않되는것로 판단이 됩니다. 다시확인해보시기 바랍니다.

비밀번호가 틀리다고 나오시는 건가요? 아니면 그냥 넘어가지만 로그인이 안된 상태인가요?

<?php
    include_once('./_common.php');

    $mb_id = "admin"; // 변경하려는 사용자 ID
    $new_password = "your_password"; // 새 비밀번호

    // 그누보드에서 비밀번호는 get_encrypt_string 함수를 이용하여 암호화됩니다.
    // 이 함수는 내부적으로 SHA256을 이용합니다.
    $new_password_hashed = get_encrypt_string($new_password);

    $sql = "UPDATE {$g5['member_table']}
            SET mb_password = '".$new_password_hashed."'
            WHERE mb_id = '".$mb_id."' ";

    sql_query($sql);
?>

 

요런식으로 강제변경하면 로긴이 잘 됩니다.

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

회원로그인

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