5331aa8be5884facf5e65dece1aaf350d73a8b52
sql_query()의 에러 처리가 die()로 SQL 쿼리 전문, MySQL 에러 메시지, 스크립트 파일 경로를 사용자에게 그대로 노출하고 있었음. 기본값 G5_DISPLAY_SQL_ERROR=false 덕분에 일반 호출에서는 트리거되지 않으나, 일부 admin 파일이 명시적으로 sql_query(\$sql, true)로 호출하여 관리자에게 raw SQL을 노출했고, SQLi 공격 시도 중 발생한 에러로 DB 구조(테이블/컬럼명)가 학습되어 정밀 공격에 활용될 수 있었음. 조치: - 서버 로그(error_log)에는 항상 상세 기록 → 운영자가 디버깅 가능 - \$is_debug 모드(G5_DEBUG=true 또는 super admin)에서만 상세 표시 + XSS 방지를 위해 htmlspecialchars로 escape - 그 외 환경에서는 "데이터베이스 처리 중 오류가 발생했습니다." 만 표시 - mysqli/mysql 폴백 분기 둘 다 동일하게 적용 변경: - lib/common.lib.php:1932 (mysqli 분기) - lib/common.lib.php:1942 (mysql 분기, 레거시 PHP 5.x 폴백) PHP 5.2.17 호환 유지 (htmlspecialchars + ENT_QUOTES 모두 PHP 4.0+).
The file is empty.
Languages
PHP
70.9%
JavaScript
16.7%
CSS
7.6%
HTML
4.6%
Python
0.2%