common.php 에서 include_once('config.php')에 공들이는 이유

common.php 에서 include_once('config.php')에 공들이는 이유

QA

common.php 에서 include_once('config.php')에 공들이는 이유

본문

common.php 에서

 

function g5_path()

{

    $chroot = substr($_SERVER['SCRIPT_FILENAME'], 0, strpos($_SERVER['SCRIPT_FILENAME'], dirname(__FILE__)));

    $result['path'] = str_replace('\\', '/', $chroot.dirname(__FILE__));

    $server_script_name = preg_replace('/\/+/', '/', str_replace('\\', '/', $_SERVER['SCRIPT_NAME']));

    $server_script_filename = preg_replace('/\/+/', '/', str_replace('\\', '/', $_SERVER['SCRIPT_FILENAME']));

    $tilde_remove = preg_replace('/^\/\~[^\/]+(.*)$/', '$1', $server_script_name);

    $document_root = str_replace($tilde_remove, '', $server_script_filename);

    $pattern = '/.*?' . preg_quote($document_root, '/') . '/i';

    $root = preg_replace($pattern, '', $result['path']);

    $port = ($_SERVER['SERVER_PORT'] == 80 || $_SERVER['SERVER_PORT'] == 443) ? '' : ':'.$_SERVER['SERVER_PORT'];

    $http = 'http' . ((isset($_SERVER['HTTPS']) && $_SERVER['HTTPS']=='on') ? 's' : '') . '://';

    $user = str_replace(preg_replace($pattern, '', $server_script_filename), '', $server_script_name);

    $host = isset($_SERVER['HTTP_HOST']) ? $_SERVER['HTTP_HOST'] : $_SERVER['SERVER_NAME'];

    if(isset($_SERVER['HTTP_HOST']) && preg_match('/:[0-9]+$/', $host))

        $host = preg_replace('/:[0-9]+$/', '', $host);

    $host = preg_replace("/[\<\>\'\"\\\'\\\"\%\=\(\)\/\^\*]/", '', $host);

    $result['url'] = $http.$host.$port.$user.$root;

    return $result;

}

 

$g5_path = g5_path();

 

include_once($g5_path['path'].'/config.php');   // 설정 파일

 

unset($g5_path);

 

에서

 

1. g5_path() 함수는 보안목적상 복잡하게 처리를 하는 것 같은데 맞나요?

 

2. 다른 파일을 include_once 할 때와 다르게 config.php 만 특별하게 처리하는 이유가 있나요?

 

 

이 질문에 댓글 쓰기 :

답변 2

g5_path() 가 복잡한 이유는

 

그누보드가 설치되는경로가 사용자 마다 다 다릅니다.

 

시스템의 경로하위가 아니라.

보통은 웹호스팅의 하위경로 혹은

서브디렉토리로 사용하는경우도 상당히 많은것으로 알고있습니다.

그러면

 

 G5_PATH라는 기준점을 잡기가 애매한거죠

그래서 

common.php가 작동되는 시작디렉토리를 찾아내는 일이 어렵죠

사용자마다 다르게 셋팅하지 않아도

g5_path()라는 함수를 이용해

그누보드 설치디렉토리를 G5_PATH로 지정하게 만드는 기능이라서

중요합니다.

그런것을 다 판단해서 리자님을 비롯한 그누보드 직원들이 공을 들인것으로 생각됩니다.

 

같은 이유로 설치디렉토리에 존재하는 config.php의 접근이 중요하게 되죠

1. 변수 초기화만 해도 보안 문제는 거의 해결됩니다.

그보다는 다양한 상황에서도 정확하게 동작하기 위해서죠.

2. 질문이 잘 이해가 안 되네요.

 

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

회원로그인

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