diff --git a/adm/member_list_exel.lib.php b/adm/member_list_exel.lib.php index fabf0b298..f9b017145 100644 --- a/adm/member_list_exel.lib.php +++ b/adm/member_list_exel.lib.php @@ -7,7 +7,9 @@ define('MEMBER_EXPORT_PAGE_SIZE', 10000); // 파일당 처리할 회원 수 define('MEMBER_EXPORT_MAX_SIZE', 300000); // 최대 처리할 회원 수 define('MEMBER_BASE_DIR', "member_list"); // 엑셀 베이스 폴더 -define('MEMBER_BASE_DATE', date('YmdHis')); // 폴더/파일명용 날짜 +// 폴더/파일명용 날짜 - 저장 경로가 추측되지 않도록 임의 문자열을 덧붙인다. +define('MEMBER_BASE_SALT', function_exists('get_random_token_string') ? get_random_token_string(8) : substr(md5(uniqid(mt_rand(), true)), 0, 8)); +define('MEMBER_BASE_DATE', date('YmdHis') . '_' . MEMBER_BASE_SALT); define('MEMBER_EXPORT_DIR', G5_DATA_PATH . "/" . MEMBER_BASE_DIR . "/" . MEMBER_BASE_DATE); // 엑셀 파일 저장 경로 define('MEMBER_LOG_DIR', G5_DATA_PATH . "/" . MEMBER_BASE_DIR . "/" . "log"); // 로그 파일 저장 경로 diff --git a/adm/member_list_exel_export.php b/adm/member_list_exel_export.php index 6009726ac..825886073 100644 --- a/adm/member_list_exel_export.php +++ b/adm/member_list_exel_export.php @@ -413,7 +413,7 @@ function member_export_delete($fileList = array()) $name = basename($file); // log 폴더와 오늘 날짜로 시작하는 폴더는 제외 - if ($name === 'log' || preg_match('/^' . date('Ymd') . '\d{6}$/', $name)) continue; + if ($name === 'log' || preg_match('/^' . date('Ymd') . '\d{6}(_[A-Za-z0-9]+)?$/', $name)) continue; if (is_file($file) && pathinfo($file, PATHINFO_EXTENSION) !== 'log' && @unlink($file)) { $cnt++; diff --git a/common.php b/common.php index 605b60c5d..b5bd2ec59 100644 --- a/common.php +++ b/common.php @@ -125,6 +125,10 @@ $_REQUEST = array_map_deep(G5_ESCAPE_FUNCTION, $_REQUEST); // PHP 4.1.0 부터 지원됨 // php.ini 의 register_globals=off 일 경우 + +// 관리자 메뉴 코드는 각 스크립트가 직접 지정하므로 요청값이 개입하지 못하게 한다. +unset($_GET['sub_menu'], $_POST['sub_menu'], $_REQUEST['sub_menu'], $_SERVER['sub_menu']); + @extract($_GET); @extract($_POST); @extract($_SERVER);