diff --git a/adm/member_form_update.php b/adm/member_form_update.php index 53174cd3b..333b18728 100644 --- a/adm/member_form_update.php +++ b/adm/member_form_update.php @@ -81,7 +81,7 @@ if ($w == '') if ($row['mb_id']) alert('이미 존재하는 이메일입니다.\\nID : '.$row['mb_id'].'\\n이름 : '.$row['mb_name'].'\\n닉네임 : '.$row['mb_nick'].'\\n메일 : '.$row['mb_email']); - sql_query(" insert into {$g5['member_table']} set mb_id = '{$mb_id}', mb_password = '".sql_password($mb_password)."', mb_datetime = '".G5_TIME_YMDHIS."', mb_ip = '{$_SERVER['REMOTE_ADDR']}', mb_email_certify = '".G5_TIME_YMDHIS."', {$sql_common} "); + sql_query(" insert into {$g5['member_table']} set mb_id = '{$mb_id}', mb_password = '".get_encrypt_string($mb_password)."', mb_datetime = '".G5_TIME_YMDHIS."', mb_ip = '{$_SERVER['REMOTE_ADDR']}', mb_email_certify = '".G5_TIME_YMDHIS."', {$sql_common} "); } else if ($w == 'u') { @@ -139,7 +139,7 @@ else if ($w == 'u') } if ($mb_password) - $sql_password = " , mb_password = '".sql_password($mb_password)."' "; + $sql_password = " , mb_password = '".get_encrypt_string($mb_password)."' "; else $sql_password = ""; diff --git a/adm/visit_delete_update.php b/adm/visit_delete_update.php index 1cbe920cf..716eec63f 100644 --- a/adm/visit_delete_update.php +++ b/adm/visit_delete_update.php @@ -19,7 +19,7 @@ if(!$pass) // 관리자 비밀번호 비교 $admin = get_admin('super'); -if(sql_password($pass) != $admin['mb_password']) +if(!check_password($pass, $admin['mb_password'])) alert('관리자 비밀번호가 일치하지 않습니다.'); if(!$year) diff --git a/bbs/delete.php b/bbs/delete.php index 570c12b19..3e75649cb 100644 --- a/bbs/delete.php +++ b/bbs/delete.php @@ -31,7 +31,7 @@ else if ($is_admin == 'group') { // 그룹관리자 } else { if ($write['mb_id']) alert('로그인 후 삭제하세요.', './login.php?url='.urlencode('./board.php?bo_table='.$bo_table.'&wr_id='.$wr_id)); - else if (sql_password($wr_password) != $write['wr_password']) + else if (!check_password($wr_password, $write['wr_password'])) alert('비밀번호가 틀리므로 삭제할 수 없습니다.'); } diff --git a/bbs/delete_all.php b/bbs/delete_all.php index 023d034fa..1d0ca652e 100644 --- a/bbs/delete_all.php +++ b/bbs/delete_all.php @@ -53,7 +53,7 @@ for ($i=count($tmp_array)-1; $i>=0; $i--) { ; } - else if ($wr_password && !$write['mb_id'] && sql_password($wr_password) == $write['wr_password']) // 비밀번호가 같다면 + else if ($wr_password && !$write['mb_id'] && check_password($wr_password, $write['wr_password'])) // 비밀번호가 같다면 { ; } diff --git a/bbs/delete_comment.php b/bbs/delete_comment.php index 7055c0955..812c6f516 100644 --- a/bbs/delete_comment.php +++ b/bbs/delete_comment.php @@ -40,7 +40,7 @@ else if ($is_admin == 'group') { // 그룹관리자 if ($member['mb_id'] != $write['mb_id']) alert('자신의 글이 아니므로 삭제할 수 없습니다.'); } else { - if (sql_password($wr_password) != $write['wr_password']) + if (!check_password($wr_password, $write['wr_password'])) alert('비밀번호가 틀립니다.'); } diff --git a/bbs/login_check.php b/bbs/login_check.php index b83fc2f00..54e4f1247 100644 --- a/bbs/login_check.php +++ b/bbs/login_check.php @@ -14,7 +14,7 @@ $mb = get_member($mb_id); // 가입된 회원이 아니다. 비밀번호가 틀리다. 라는 메세지를 따로 보여주지 않는 이유는 // 회원아이디를 입력해 보고 맞으면 또 비밀번호를 입력해보는 경우를 방지하기 위해서입니다. // 불법사용자의 경우 회원아이디가 틀린지, 비밀번호가 틀린지를 알기까지는 많은 시간이 소요되기 때문입니다. -if (!$mb['mb_id'] || (sql_password($mb_password) !== $mb['mb_password'])) { +if (!$mb['mb_id'] || !check_password($mb_password, $mb['mb_password'])) { alert('가입된 회원아이디가 아니거나 비밀번호가 틀립니다.\\n비밀번호는 대소문자를 구분합니다.'); } diff --git a/bbs/member_leave.php b/bbs/member_leave.php index c880d0284..c58910b84 100644 --- a/bbs/member_leave.php +++ b/bbs/member_leave.php @@ -7,7 +7,7 @@ if (!$member['mb_id']) if ($is_admin == 'super') alert('최고 관리자는 탈퇴할 수 없습니다'); -if (!($_POST['mb_password'] && $member['mb_password'] == sql_password($_POST['mb_password']))) +if (!($_POST['mb_password'] && check_password($_POST['mb_password'], $member['mb_password']))) alert('비밀번호가 틀립니다.'); // 회원탈퇴일을 저장 diff --git a/bbs/password_check.php b/bbs/password_check.php index 4f2f63e9b..086508911 100644 --- a/bbs/password_check.php +++ b/bbs/password_check.php @@ -6,7 +6,7 @@ if ($w == 's') { $wr = get_write($write_table, $wr_id); - if (sql_password($wr_password) != $wr['wr_password']) + if (!check_password($wr_password, $wr['wr_password'])) alert('비밀번호가 틀립니다.'); // 세션에 아래 정보를 저장. 하위번호는 비밀번호없이 보아야 하기 때문임. @@ -20,7 +20,7 @@ if ($w == 's') { $wr = get_write($write_table, $wr_id); - if (sql_password($wr_password) != $wr['wr_password']) + if (!check_password($wr_password, $wr['wr_password'])) alert('비밀번호가 틀립니다.'); // 세션에 아래 정보를 저장. 하위번호는 비밀번호없이 보아야 하기 때문임. diff --git a/bbs/password_lost2.php b/bbs/password_lost2.php index 2b7a43a80..6c20c0a03 100644 --- a/bbs/password_lost2.php +++ b/bbs/password_lost2.php @@ -30,7 +30,7 @@ else if (is_admin($mb['mb_id'])) // 임시비밀번호 발급 $change_password = rand(100000, 999999); -$mb_lost_certify = sql_password($change_password); +$mb_lost_certify = get_encrypt_string($change_password); // 어떠한 회원정보도 포함되지 않은 일회용 난수를 생성하여 인증에 사용 $mb_nonce = md5(pack('V*', rand(), rand(), rand(), rand())); diff --git a/bbs/register_form.php b/bbs/register_form.php index 809bcb6ed..cb6fd2517 100644 --- a/bbs/register_form.php +++ b/bbs/register_form.php @@ -69,7 +69,7 @@ if ($w == "") { if ($_POST['is_update']) $tmp_password = $_POST['mb_password']; else - $tmp_password = sql_password($_POST['mb_password']); + $tmp_password = get_encrypt_string($_POST['mb_password']); if ($member['mb_password'] != $tmp_password) alert('비밀번호가 틀립니다.'); diff --git a/bbs/register_form_update.php b/bbs/register_form_update.php index b61081c4e..24e4987bc 100644 --- a/bbs/register_form_update.php +++ b/bbs/register_form_update.php @@ -181,7 +181,7 @@ if ($config['cf_cert_use'] && $cert_type && $md5_cert_no) { if ($w == '') { $sql = " insert into {$g5['member_table']} set mb_id = '{$mb_id}', - mb_password = '".sql_password($mb_password)."', + mb_password = '".get_encrypt_string($mb_password)."', mb_name = '{$mb_name}', mb_nick = '{$mb_nick}', mb_nick_date = '".G5_TIME_YMD."', @@ -276,7 +276,7 @@ if ($w == '') { $sql_password = ""; if ($mb_password) - $sql_password = " , mb_password = '".sql_password($mb_password)."' "; + $sql_password = " , mb_password = '".get_encrypt_string($mb_password)."' "; $sql_nick_date = ""; if ($mb_nick_default != $mb_nick) diff --git a/bbs/write.php b/bbs/write.php index 03f8b3aae..6f4149aad 100644 --- a/bbs/write.php +++ b/bbs/write.php @@ -309,7 +309,7 @@ if ($w == '') { if (!$is_admin) { if (!($is_member && $member['mb_id'] == $write['mb_id'])) { - if (sql_password($wr_password) != $write['wr_password']) { + if (!check_password($wr_password, $write['wr_password'])) { alert('비밀번호가 틀립니다.'); } } diff --git a/bbs/write_comment_update.php b/bbs/write_comment_update.php index ceb54a5ee..c2fdb67e7 100644 --- a/bbs/write_comment_update.php +++ b/bbs/write_comment_update.php @@ -60,7 +60,7 @@ if ($is_member) else { $mb_id = ''; - $wr_password = sql_password($wr_password); + $wr_password = get_encrypt_string($wr_password); } if ($w == 'c') // 댓글 입력 diff --git a/bbs/write_update.php b/bbs/write_update.php index fcc33c999..e70f57e6c 100644 --- a/bbs/write_update.php +++ b/bbs/write_update.php @@ -191,7 +191,7 @@ if ($w == '' || $w == 'r') { $wr_name = clean_xss_tags(trim($_POST['wr_name'])); if (!$wr_name) alert('이름은 필히 입력하셔야 합니다.'); - $wr_password = sql_password($wr_password); + $wr_password = get_encrypt_string($wr_password); $wr_email = get_email_address(trim($_POST['wr_email'])); $wr_homepage = clean_xss_tags($wr_homepage); } @@ -327,7 +327,7 @@ if ($w == '' || $w == 'r') { $wr_email = get_email_address(trim($_POST['wr_email'])); } - $sql_password = $wr_password ? " , wr_password = '".sql_password($wr_password)."' " : ""; + $sql_password = $wr_password ? " , wr_password = '".get_encrypt_string($wr_password)."' " : ""; $sql_ip = ''; if (!$is_admin) diff --git a/config.php b/config.php index 1256efa2e..5ef1cc104 100644 --- a/config.php +++ b/config.php @@ -165,6 +165,10 @@ define('G5_SMTP', '127.0.0.1'); 기타 상수 ********************/ +// 암호화 함수 지정 +// 사인트 운영 중 설정을 변경하면 로그인이 안되는 등의 문제가 발생합니다. +define('G5_STRING_ENCRYPT_FUNCTION', 'sql_password'); + // SQL 에러를 표시할 것인지 지정 // 에러를 표시하려면 TRUE 로 변경 define('G5_DISPLAY_SQL_ERROR', FALSE); diff --git a/lib/common.lib.php b/lib/common.lib.php index 37e0c4704..483b50ba5 100644 --- a/lib/common.lib.php +++ b/lib/common.lib.php @@ -2824,4 +2824,24 @@ function insert_popular($field, $str) sql_query($sql, FALSE); } } + +// 문자열 암호화 +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); + + return ($password === $hash); +} ?> \ No newline at end of file