개별·일괄 완료 처리에서 완료 시각을 기록하고 해당 시각부터 지급 대기 기간을 계산한다. 기존 완료 상품은 종전 기준을 유지하며 0일 설정은 완료 처리 직후 지급한다.
신규 설치 스키마와 DB 마이그레이션을 추가했다. 임시 MySQL 테이블 회귀 테스트, PHP 문법 검사와 스키마 일치 검증을 통과했다.
보관함과 상품판매순위에서 날짜 전체 형식·실제 달력 날짜·기간 순서를 검증하고 잘못된 요청을 조회 전에 HTTP 400으로 거부한다. 날짜 출력과 조회 링크를 각각 인코딩하고 최초 조회·분류·정렬·페이징을 유지한다.
검증: 변경 PHP 문법 검사, 100개 잘못된 날짜 입력과 정상 조회·윤년·페이징 회귀 검사, Chromium 속성 주입 및 이벤트 차단 검사 통과. 실제 관리자 세션과 운영 DB 검증 및 배포는 미실행.
KG이니시스·토스페이먼츠·NICEPAY·KCP의 설정과 PC·모바일 주문서 버튼을 공통 목록으로 관리한다. 기본 PG 네이버페이가 비활성인 경우에만 KCP 병용 경로를 제공한다.
토스 직접 호출 선택값과 일반 카드 전환 초기화, NICEPAY 결제수단 변경 이벤트, 토스 머니·복합결제 현금영수증 저장을 보완한다. 설정 컬럼 확장 마이그레이션과 회귀 테스트를 추가한다.
검증: 변경 PHP 14개 문법 검사, PHP·JavaScript 회귀 테스트, 신규 설치와 마이그레이션 스키마 비교 통과. 실제 PG 승인·취소 및 운영 DB 마이그레이션은 미실행.
게시판·1:1문의·폼메일·쇼핑몰 로고의 PHP 업로드 검사에서 위험 확장자를 거부한다. 대소문자와 다중 확장자 등 파일명 변형을 검사하고 클라이언트 검사도 일치시킨다.
검증: 위험 파일 및 정상 이미지·문서 파일명 격리 검증, 저장 전 차단 검증, PHP·JavaScript 문법 검사 통과.
CI·DI 관련 식별값, 본인확인·성인인증 상태, 생년월일·성별과 인증 이력을 별도 요청으로 정리한다. 일반 회원정보와 이메일 인증 상태는 유지하고 삭제할 정보가 없는 경우 버튼을 숨긴다.
회원 수정·삭제 권한과 대상 회원 등급, POST·관리자 토큰·요청 출처를 검증한다.
검증: 변경 PHP 3개 문법 검사, 임시 DB의 권한·토큰·출처·대상 정보 삭제 및 다른 회원 보존 검사 통과. 브라우저에서 별도 폼 제출과 관리자 토큰 삽입 확인.
메일 인증 기한이 지난 미인증 회원을 일일 정리에서 탈퇴 처리하고 본인확인 정보와 소셜 연결을 해제한다. 나머지 회원자료는 기존 탈퇴 후 삭제 정책에 따라 정리하며 아이디는 보존한다.
자진 탈퇴와 자동 정리에 공통 함수를 사용하고 인증 완료·재발송과의 동시 변경을 조건부 갱신으로 보호한다. 관리자 상태 표시와 설정 안내, 운영 문서를 함께 반영한다.
검증: 변경 PHP 6개 문법 검사, 임시 DB에서 만료 경계·재발송·동시 변경·자진 탈퇴·유예 후 정리 검사 통과.
전용 신규 결제와 자동 취소를 차단하고 기존 주문 조회 및 실제 PG 취소 확인 후 수동 정리를 지원한다. 기존 DB와 일반 PG 경로를 보존하고 5.6.37 전환 및 사후지원 절차를 문서화한다.
검증: 변경 PHP 문법, SIRK 요청 차단, 설치 스키마 및 쇼핑몰 후설치 검사 통과. 실제 PG 결제·취소 검증은 별도 진행한다.
과거 누적 DDL과 데이터 보정을 시점별 SQL로 분리하고 관리자·CLI 실행기를 제공한다. 실행 순서, 잠금, 체크섬, 성공·실패 이력 및 개별 실행의 선행 조건을 검증한다.
기존 스키마의 부분 적용 복구와 설치 SQL 정합성 검사를 추가하고 실행·복구 절차를 문서화한다.
관리자 페이지는 자신의 메뉴 코드를 변수에 지정한 뒤 공통 파일을 include
하는데, 공통 파일의 extract 처리로 그 값이 요청값으로 대체될 수 있었다.
extract 이전에 요청 배열에서 해당 키를 제거하여 각 페이지가 지정한 값이
유지되도록 한다. 해당 키를 요청값으로 참조하는 코드는 없으므로 동작에
영향이 없다.
변수 자체를 unset 하는 방식은 페이지가 지정한 값까지 사라져 관리권한을
위임받은 계정이 자신의 메뉴에도 접근하지 못하게 되므로 사용하지 않는다.
회원 내보내기 파일의 저장 폴더와 파일 이름이 생성 시각만으로 구성되어
경로를 추측할 여지가 있어, 임의 문자열을 덧붙인다. 다운로드 주소는 서버가
생성해 전달하므로 기존 흐름에는 영향이 없으며, 지난 폴더 정리 조건도 함께
맞춘다.
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
(cherry picked from commit 7739b95be1fcbe764d888a9f0fba1522cc1ebacb)
미완료주문을 주문으로 확정할 때 임시 데이터에서 복원한 결제수단, 접속 IP,
테스트 결제 여부를 정제 없이 사용하던 것을 이웃 필드와 동일한 방식으로
처리한다. 접속 IP는 표기 형식에 맞지 않으면 저장하지 않고, 테스트 결제
여부는 정수로만 저장하며, 세 값 모두 배열로 전달된 경우를 함께 걸러낸다.
임시주문 저장 시 접속 IP와 테스트 결제 여부를 서버에서 결정하는 처리가
일반 주문 분기 안에만 있어 개인결제 경로에서는 요청값이 그대로 저장되던
것을 분기 밖으로 옮겨 항상 서버 값을 사용하도록 한다.
결제수단 값이 그대로 출력되던 관리자 주문상세, 주문목록, 부분취소 화면과
구매자 주문조회 화면(웹/모바일/테마)에 get_text() 인코딩을 적용한다.
주문상세는 표시 문자열을 여러 곳에서 재사용하므로 생성 지점에서 처리한다.
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
(cherry picked from commit 77069575096881a31b29fdf130c83226610bf8df)
콘텐츠와 동일하게, 게시판(bo_include)·1:1문의(qa_include)·쇼핑몰 분류
(ca_include)의 상단/하단 파일 경로도 저장 전에 먼저 정규화한 뒤 확장자와
위치를 검증하도록 순서를 조정한다. 정규화 과정에서 확장자가 사라져 검증을
우회하던 경로를 차단하고, data 디렉터리로 귀결되는 경로를 거부한다.
실행 직전 board_head/board_tail, qahead/qatail, shop 목록·상품 페이지에서도
승인 확장자와 data 디렉터리 여부를 다시 확인하는 is_content_include_allowed()
를 적용한다. 이미 저장된 경로도 실행 시 재확인된다.
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
(cherry picked from commit 0c6bca704725ebea2a584d4c06366282e9bc36d6)
콘텐츠 상단/하단 파일 경로를 저장 전에 먼저 정규화한 뒤 확장자와 위치를
검증하도록 순서를 조정한다. 정규화 과정에서 확장자가 사라져 검증을
우회하던 경로를 차단한다. 실행 직전 bbs/content.php 에서도 승인 확장자와
data 디렉터리 귀결 여부를 다시 확인하는 is_content_include_allowed() 를
적용하고, 콘텐츠 상단/하단 이미지 업로드는 이미지 파일만 허용하도록 검사한다.
미완료주문 상세의 결제방법 출력에 get_text() 인코딩을 적용하고, 임시주문
저장 시 정제한 결제수단 값을 원본에도 반영한다. 개인결제 주문 세션은
결제정보 검증을 통과한 뒤에만 설정한다.
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
(cherry picked from commit 196255d76912531d7e13861821bd59ca15c967d1)
에스크로 배송등록 실패 시 알림 대신 주문 관리자 메모에 결과를 기록하고
이후 처리를 중단한다. 현금영수증 발급 후 DB 반영에 실패한 경우 자동 취소
요청을 제거하고 관리자가 나이스페이에서 직접 확인하도록 안내를 변경한다.
가상계좌 취소 요청금액이 없을 때의 응답 코드를 명시한다.
patch_5631 의 '회귀 점검 후 결제 및 쿠폰존 보강'(4405ddc1c) 중
나이스페이 관련 변경만 적용했다.
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
(cherry picked from commit 3f6d013f9466d11eacba29e81ad515a9a0ceeeef)
cp_price 가 두 번 선언되어 있어 하나를 제거하고, 폼 본문에서 참조하는
cz_id 를 초기화 대상에 추가한다.
cz_id 참조 지점은 현재 앞쪽 조건의 단축 평가로 도달하지 않으나,
조건이 바뀔 경우를 대비해 초기화 목록을 참조 항목과 일치시킨다.
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
(cherry picked from commit c03b311e789642f0af3fe898e040afea28733e7c)
캡챠가 문서 최하단에 생성되어, 확인을 누르면 페이지 끝까지 강제로
스크롤된 뒤 입력해야 했다. 페이지가 길어 위치를 찾기 어렵다는 의견이
있어 상단 고정 영역의 확인 버튼 옆에 노출하도록 변경한다.
- 캡챠 영역을 확인 버튼과 같은 고정 영역으로 이동하고 패널 형태로 표시
- 고정 노출이므로 강제 스크롤을 제거하고 입력란 포커스로 대체
- 좁은 화면에서 관리자 메뉴에 가려지지 않도록 표시 순서 조정
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
(cherry picked from commit 39b7637bab609600a21118966968f46ab1fb6546)
board_list.php 의 검색대상 값은 a.gr_id 이나 링크가 gr_id 로 전달하여
그룹에 속한 게시판이 조회되지 않던 문제를 수정한다.
접두사가 없는 gr_id 는 최고관리자가 아닌 경우 그룹 테이블을 함께
조회하는 구조에서 컬럼 모호성 오류가 발생하므로 a.gr_id 로 맞춘다.
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
(cherry picked from commit c6dd497a450bd5ba08d743efc26ba73fcdd9e626)
검색필드가 SQL 컬럼명 위치에 검증 없이 삽입되던 관리자 목록 9개
파일에 허용 컬럼 목록을 추가한다. 허용 컬럼은 각 화면의 검색 UI가
제공하는 항목 기준이며, 미허용 값은 빈 문자열이 아닌 유효 컬럼으로
대체하여 SQL 문법 오류를 방지한다.
- adm/auth_list.php
- adm/board_list.php
- adm/boardgroup_list.php
- adm/boardgroupmember_list.php
- adm/point_list.php
- adm/poll_list.php
- adm/popular_list.php
- adm/shop_admin/inorderlist.php
- adm/shop_admin/personalpaylist.php
adm/member_list.php 의 불필요한 주석 제거
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
(cherry picked from commit ff56beff8c6804013e830eb828779e02493cee52)
- 모니터 알림과 KG 대사 배치 쿼리에도 주문 환불금액을 포함해
현황 목록·상세 화면과 동일한 기준으로 판정하도록 정리
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
(cherry picked from commit 1388bc323724128acf78b15a49767e39f9709491)
- 부분취소 이력이 있는 주문은 잔여 금액을 부분취소로 처리해 전체취소 지원
- 부분취소로 전액 환불된 주문과 KG에서 이미 취소된 주문은 주문 취소만 진행
- PG 승인취소 미선택 시 차단하지 않고 주문만 취소하며 처리 내용을 이력에 기록
- 남은 품목 취소로 주문 전체가 취소되는 경우에도 PG 취소 여부 확인창 표시
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
- 전자결제/본인확인/SMS 신청 링크를 sir.kr 최신 경로로 교체
- 신용카드 전자결제에 나이스페이먼츠 추가(4개 1열 배치, 카드 폭 조정)
- 나이스페이먼츠 신청 버튼 이미지 추가
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
- 상품이벤트/개인결제복사/SMS 번호·그룹·폼·업로드/방문로그 삭제 등
POST 기반 상태변경 처리에 check_request_origin() 적용 (스킨 수정 불필요)
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
- member_list·index·couponzonelist·inorderlist·personalpaylist의
정렬 컬럼/방향 값을 허용 목록으로 제한하여 ORDER BY 절에 임의 값 삽입 차단
- 기존 다른 목록 파일과 동일한 in_array 화이트리스트 패턴 적용
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>