[security] 엑셀/CSV 다운로드 출력값 안전 처리

lib/common.lib.php 에 csv_safe_cell() 헬퍼 추가 (function_exists
가드 포함). 셀 값이 = + - @ TAB CR 로 시작하면 작은따옴표를 prefix
하여 스프레드시트가 수식으로 해석하지 못하도록 변환.

다음 출력 지점에서 사용자 입력 컬럼에 적용:
- adm/shop_admin/orderprintresult.php (CSV + XLS 두 분기)
- adm/shop_admin/orderdeliveryexcel.php
- adm/member_list_exel_export.php
- adm/sms_admin/num_book_file_download.php

호출부는 function_exists('csv_safe_cell') ? ... : 원본 폴백 형태로
감싸서 lib 미업데이트 환경에서도 fatal error 없이 동작하도록 함.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
This commit is contained in:
thisgunandClaude Opus 4.7 committed 2026-05-26 07:30:21 +00:00
1 parent 4c00c60006
commit a6fbbe6ad2
5 files changed
+50 -27

No files matched your search

+19
View File
@@ -213,6 +213,25 @@ if (!function_exists('get_js_safe_string')) {
}
// CSV/Excel 셀에 출력할 값을 안전하게 변환 (수식 인젝션 방지)
// 값이 = + - @ TAB CR 로 시작하면 작은따옴표를 prefix 해 수식 해석을 차단
if (!function_exists('csv_safe_cell')) {
function csv_safe_cell($v)
{
if ($v === null || $v === '') {
return $v;
}
$s = (string)$v;
$first = substr($s, 0, 1);
if ($first === '=' || $first === '+' || $first === '-' || $first === '@'
|| $first === "\t" || $first === "\r") {
return "'" . $s;
}
return $s;
}
}
// 경고메세지를 경고창으로
function alert($msg='', $url='', $error=true, $post=false)
{