security: KVE-2026-2346 KCP 통보 검증과 입금·망취소 재처리 보강

테스트·운영 발신지와 결제 당시 상점·거래·계좌·금액을 대조하여 위조 입금 처리를 차단한다. 개인결제와 연결 주문의 중복 가산을 막고 통보 이력과 목표값으로 MyISAM/InnoDB 중간 실패를 재처리한다.

DB 마이그레이션과 기존 거래 적용·복구 안내를 추가했다. 격리 HTTP/MySQL 검사 420개, PHP 문법 검사와 설치 스키마 대조가 통과했다. 실제 KCP 연동 확인과 배포·KISA 회신은 별도 진행이 필요하다.
This commit is contained in:
whitedot
2026-09-10 05:17:59 +00:00
parent 560aa0af47
commit 7a80ae913d
12 changed files with 650 additions and 267 deletions
+18
View File
@@ -683,6 +683,7 @@ CREATE TABLE IF NOT EXISTS `g5_shop_order` (
`od_test` tinyint(4) NOT NULL DEFAULT '0',
`od_mobile` tinyint(4) NOT NULL DEFAULT '0',
`od_pg` varchar(255) NOT NULL DEFAULT '',
`od_kcp_site_cd` varchar(5) NOT NULL DEFAULT '',
`od_tno` varchar(255) NOT NULL DEFAULT '',
`od_app_no` varchar(20) NOT NULL DEFAULT '',
`od_escrow` tinyint(4) NOT NULL DEFAULT '0',
@@ -781,6 +782,7 @@ CREATE TABLE IF NOT EXISTS `g5_shop_personalpay` (
`pp_use` TINYINT(4) NOT NULL DEFAULT '0',
`pp_price` INT(11) NOT NULL DEFAULT '0',
`pp_pg` varchar(255) NOT NULL DEFAULT '',
`pp_kcp_site_cd` varchar(5) NOT NULL DEFAULT '',
`pp_tno` VARCHAR(255) NOT NULL DEFAULT '',
`pp_app_no` VARCHAR(20) NOT NULL DEFAULT '',
`pp_casseqno` VARCHAR(255) NOT NULL DEFAULT '',
@@ -1037,3 +1039,19 @@ CREATE TABLE IF NOT EXISTS `g5_shop_inicis_pay_event` (
KEY `pe_status` (`pe_status`),
KEY `pe_created_at` (`pe_created_at`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8;
-- KCP 통보 처리 및 중간 실패 복구 이력
CREATE TABLE `g5_shop_kcp_noti` (
`kn_key` char(64) NOT NULL,
`kn_trade` char(64) NOT NULL,
`kn_noti_id` varchar(20) NOT NULL,
`kn_op_cd` char(2) NOT NULL,
`kn_payload` char(64) NOT NULL,
`od_id` bigint(20) unsigned NOT NULL DEFAULT '0',
`kn_plan` mediumtext NOT NULL,
`kn_done` tinyint(4) NOT NULL DEFAULT '0',
`kn_created_at` datetime NOT NULL,
PRIMARY KEY (`kn_key`),
KEY `kn_trade` (`kn_trade`),
KEY `od_id` (`od_id`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8;