테스트 사이트 - 개발 중인 베타 버전입니다

okname 등록 후 성인인증 문의 채택완료

나폴레옹 5년 전 조회 4,029

안녕하세요. 여러 고수님들의 조언을 구하려고 글을 남깁니다.

 

이전에 질문을 통해 okname 신청 후 등록까지 마무리되었습니다.

 

혹시 휴대폰 본인인증시 성인이 아니라면 가입이 불가능하도록 하고 싶은데,

 

okname/hpcert2.php에서 어느 부분을 수정해야할지 모르겠어서 질문드립니다.

 

회원관리에 보면, 본인인증, 성인인증이 따로 있긴한데, 게시판 접근을 막을 수 있는

 

방법을 따로 없는 것 같아, 가입자체를 막고 싶습니다.

 

아직 미숙한 부분이 많아 최대한 보고 따라하는 수준으로 설명 부탁드립니다.

 

즐거운 금요일 퇴근까지 힘내시고, 좋은 주말 보내시길 바랍니다. 감사합니다.

댓글을 작성하려면 로그인이 필요합니다.

답변 2개

채택된 답변
+20 포인트
cuwaaang
5년 전

그페이지에서 수정하실거면

생년월일 변수 가져오는부분에서 19세나 20세면 거르셔서 취소시키는 식으로 하셔야할듯

로그인 후 평가할 수 있습니다

댓글을 작성하려면 로그인이 필요합니다.

아래에서 어떤 부분을 수정해야되는지 알 수 있을까요?ㅜㅜ

</strong></p>

<p><?php

include_once('./_common.php');</p>

<p>$check_arrays = array('exe', 'keypath', 'memId', 'endPointURL', 'endPointUrl', 'logPath');</p>

<p>foreach($check_arrays as $key){

    if( isset($_REQUEST[$key]) && $_REQUEST[$key] ){

        die('bad request');

    }</p>

<p>    $$key = '';

}</p>

<p>// KISA 취약점 내용(KVE-2018-0291) hpcert1.php의 $cmd 함수에 대한 인자 값은 hpcert_config.php 파일에서 설정되나, 이를 다른 페이지에서 포함한 뒤 호출할 시 임의 값 설정 가능

// 이에 include_once 를 require 로 수정함

require('./hpcert.config.php');

/**************************************************************************

    파일명 : safe_hs_cert3.php</p>

<p>    생년월일 본인 확인서비스 결과 화면(return url)

**************************************************************************/</p>

<p>/* 공통 리턴 항목 */

//$idcfMbrComCd           =   $_POST['idcf_mbr_com_cd'];      // 고객사코드

$idcfMbrComCd           =   $memId;

$hsCertSvcTxSeqno       =   $_POST['hs_cert_svc_tx_seqno']; // 거래번호

$rqstSiteNm             =   $_POST['rqst_site_nm'];         // 접속도메인

$hsCertRqstCausCd       =   $_POST['hs_cert_rqst_caus_cd']; // 인증요청사유코드 2byte  (00:회원가입, 01:성인인증, 02:회원정보수정, 03:비밀번호찾기, 04:상품구매, 99:기타)</p>

<p>$resultCd               =   $_POST['result_cd'];            // 결과코드

$resultMsg              =   $_POST['result_msg'];           // 결과메세지

$certDtTm               =   $_POST['cert_dt_tm'];           // 인증일시</p>

<p>if($resultCd != 'B000') {

    alert_close('휴대폰 본인확인 중 오류가 발생했습니다. 오류코드 : '.$resultCd.'\\n\\n문의는 코리아크레딧뷰로 고객센터 02-708-1000 로 해주십시오.');

}</p>

<p>/**************************************************************************

 * 모듈 호출    ; 생년월일 본인 확인서비스 결과 데이터를 복호화한다.

 **************************************************************************/

$encInfo = $_POST['encInfo'];

if(preg_match('~[^0-9a-zA-Z+/=]~', $encInfo, $match)) {echo "입력 값 확인이 필요합니다"; exit;}</p>

<p>//KCB서버 공개키

$WEBPUBKEY = trim($_POST['WEBPUBKEY']);

if(preg_match('~[^0-9a-zA-Z+/=]~', $WEBPUBKEY, $match)) {echo "입력 값 확인이 필요합니다"; exit;}</p>

<p>//KCB서버 서명값

$WEBSIGNATURE = trim($_POST['WEBSIGNATURE']);

if(preg_match('~[^0-9a-zA-Z+/=]~', $WEBSIGNATURE, $match)) {echo "입력 값 확인이 필요합니다"; exit;}</p>

<p>// ########################################################################

// # 암호화키 파일 설정 (절대경로) - 파일은 주어진 파일명으로 자동 생성 됨

// ########################################################################

$keypath = G5_OKNAME_PATH.'/key/safecert_'.$idcfMbrComCd.'.key';</p>

<p>$cpubkey = $WEBPUBKEY;    //server publickey

$csig = $WEBSIGNATURE;    //server signature</p>

<p>// ########################################################################

// # 로그 경로 지정 및 권한 부여 (절대경로)

// # 옵션값에 'L'을 추가하는 경우에만 로그가 생성됨.

// ########################################################################

$option = 'SU';</p>

<p>// 명령어

$cmd = "$exe $keypath $idcfMbrComCd $endPointUrl $WEBPUBKEY $WEBSIGNATURE $encInfo $logPath $option";</p>

<p>// 실행

exec($cmd, $out, $ret);</p>

<p>// 인증내역기록

@insert_cert_history($member['mb_id'], 'kcb', 'hp');</p>

<p>if($ret == 0) {

    // 결과라인에서 값을 추출

    foreach($out as $a => $b) {

        if($a < 17) {

            $field[$a] = $b;

        }

    }

    $resultCd = $field[0];

}

else {

    if($ret <=200)

        $resultCd=sprintf("B%03d", $ret);

    else

        $resultCd=sprintf("S%03d", $ret);

}</p>

<p>/*

echo "처리결과코드      :$resultCd  
";

echo "처리결과메시지    :$field[1]  
";

echo "거래일련번호      :$field[2]  
";

echo "인증일시          :$field[3]  
";

echo "DI                :$field[4]  
";

echo "CI                :$field[5]  
";

echo "성명              :$field[7]  
";

echo "생년월일          :$field[8]  
";

echo "성별              :$field[9]  
";

echo "내외국인구분      :$field[10] 
";

echo "통신사코드        :$field[11] 
";

echo "휴대폰번호        :$field[12] 
";

echo "리턴메시지        :$field[16] 
";

*/</p>

<p>// 인증결과처리

$mb_name = $field[7];

$req_num = $field[12];

$mb_birth = $field[8];

$mb_dupinfo = $field[4];

$phone_no = hyphen_hp_number($req_num);</p>

<p>// 중복정보 체크

$sql = " select mb_id from {$g5['member_table']} where mb_id <> '{$member['mb_id']}' and mb_dupinfo = '{$mb_dupinfo}' ";

$row = sql_fetch($sql);

if ($row['mb_id']) {

    alert_close("입력하신 본인확인 정보로 가입된 내역이 존재합니다.\\n회원아이디 : ".$row['mb_id']);

}</p>

<p>// hash 데이터

$cert_type = 'hp';

$md5_cert_no = md5($req_num);

$hash_data   = md5($mb_name.$cert_type.$mb_birth.$md5_cert_no);</p>

<p>// 성인인증결과

$adult_day = date("Ymd", strtotime("-19 years", G5_SERVER_TIME));

$adult = ((int)$mb_birth <= (int)$adult_day) ? 1 : 0;</p>

<p>set_session('ss_cert_type',    $cert_type);

set_session('ss_cert_no',      $md5_cert_no);

set_session('ss_cert_hash',    $hash_data);

set_session('ss_cert_adult',   $adult);

set_session('ss_cert_birth',   $mb_birth);

set_session('ss_cert_sex',     ($field[9] == 1 ? 'M' : 'F'));

set_session('ss_cert_dupinfo', $mb_dupinfo);</p>

<p>$g5['title'] = 'KCB 휴대폰 본인확인';

include_once(G5_PATH.'/head.sub.php');

?></p>

<p><script>

$(function() {

    var $opener = window.opener;</p>

<p>    $opener.$("input[name=cert_type]").val("<?php echo $cert_type; ?>");

    $opener.$("input[name=mb_name]").val("<?php echo $mb_name; ?>").attr("readonly", true);

    $opener.$("input[name=mb_hp]").val("<?php echo $phone_no; ?>").attr("readonly", true);

    $opener.$("input[name=cert_no]").val("<?php echo $md5_cert_no; ?>");</p>

<p>    alert("본인의 휴대폰번호로 확인 되었습니다.");

    window.close();

});

</script></p>

<p><?php

include_once(G5_PATH.'/tail.sub.php');

?></p>

<p> </p>

<p><strong>

로그인 후 평가할 수 있습니다

댓글을 작성하려면 로그인이 필요합니다.

답변을 작성하려면 로그인이 필요합니다.

로그인