- adm/qa_config_update.php / adm/contentformupdate.php : qa_include_head/tail, co_include_head/tail 가 super 가드 없이 변경 가능해 하위 관리자가 임의 PHP 경로를 include 시킬 수 있던 LFI 위험을 board_form_update.php 와 동일한 패턴(super 외에는 기존 값 유지)으로 차단. - adm/member_form_update.php / adm/member_list_update.php : 신규 회원 생성·일괄 수정 시 부여하려는 mb_level 상한 검증이 없어 하위 관리자가 자기보다 높은 등급을 부여할 수 있던 권한 상승을 차단. - adm/shop_admin/categorylistupdate.php / adm/shop_admin/itemformupdate.php : is_include_path_check 호출에서 두 번째 인자(is_input=1) 누락으로 rar/php/zip wrapper 등 경로 wrapper 차단이 동작하지 않던 부분을 is_include_path_check($file, 1) 로 강화. - adm/shop_admin/orderdeliveryupdate.php / adm/shop_admin/orderpartcancelupdate.php / adm/sendmail_test.php : 상태 변경 동작에 check_admin_token() 누락으로 발생하던 CSRF 위험을 토큰 검증 추가로 차단. sendmail_test 폼에는 hidden token 필드 추가. Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
53 lines
1.8 KiB
PHP
53 lines
1.8 KiB
PHP
<?php
|
|
$sub_menu = '400400';
|
|
include_once('./_common.php');
|
|
|
|
auth_check_menu($auth, $sub_menu, "w");
|
|
|
|
check_admin_token();
|
|
|
|
$tax_mny = isset($_POST['mod_tax_mny']) ? preg_replace('/[^0-9]/', '', $_POST['mod_tax_mny']) : 0;
|
|
$free_mny = isset($_POST['mod_free_mny']) ? preg_replace('/[^0-9]/', '', $_POST['mod_free_mny']) : 0;
|
|
|
|
if(!$tax_mny && !$free_mny)
|
|
alert('과세 취소금액 또는 비과세 취소금액을 입력해 주십시오.');
|
|
|
|
if(!trim($mod_memo))
|
|
alert('요청사유를 입력해 주십시오.');
|
|
|
|
// 주문정보
|
|
$sql = " select * from {$g5['g5_shop_order_table']} where od_id = '$od_id' ";
|
|
$od = sql_fetch($sql);
|
|
|
|
if(! (isset($od['od_id']) && $od['od_id']))
|
|
alert_close('주문정보가 존재하지 않습니다.');
|
|
|
|
if($od['od_settle_case'] == '계좌이체' && substr($od['od_receipt_time'], 0, 10) >= G5_TIME_YMD)
|
|
alert_close('실시간 계좌이체건의 부분취소 요청은 결제일 익일에 가능합니다.');
|
|
|
|
// 금액비교
|
|
$od_misu = abs($od['od_misu']);
|
|
|
|
if(($tax_mny && $free_mny) && ($tax_mny + $free_mny) > $od_misu)
|
|
alert('과세, 비과세 취소금액의 합을 '.display_price($od_misu).' 이하로 입력해 주십시오.');
|
|
|
|
if($tax_mny && $tax_mny > $od_misu)
|
|
alert('과세 취소금액을 '.display_price($od_misu).' 이하로 입력해 주십시오.');
|
|
|
|
if($free_mny && $free_mny > $od_misu)
|
|
alert('비과세 취소금액을 '.display_price($od_misu).' 이하로 입력해 주십시오.');
|
|
|
|
// PG사별 부분취소 실행
|
|
include_once(G5_SHOP_PATH.'/'.strtolower($od['od_pg']).'/orderpartcancel.inc.php');
|
|
|
|
include_once(G5_PATH.'/head.sub.php');
|
|
?>
|
|
|
|
<script>
|
|
alert("<?php echo $od['od_settle_case']; ?> 부분취소 처리됐습니다.");
|
|
opener.document.location.reload();
|
|
self.close();
|
|
</script>
|
|
|
|
<?php
|
|
include_once(G5_PATH.'/tail.sub.php');
|