- Docker 개발 환경 구성 (nginx, php, mariadb)
- 그누보드 기본 extend 파일들 추가
- R2 파일 목록 확인 스크립트 추가
- .gitignore 설정 (gnuboard 코어, 테스트 파일 제외)
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
- 지원 기능 명시 (게시판/에디터 ✅, 프로필 ❌)
- 프로필 이미지 R2 미지원 사유 문서화
- 코어 수정 없이는 extend 훅으로 불가능
- 로컬 저장이 최선의 선택임을 명시
- 설치/설정 방법 및 테스트 결과 포함
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
- delete_editor_file 이벤트 훅 구현
- cheditor5, smarteditor2 에디터에서 이미지 삭제 시 R2에서도 삭제
- 파일 경로 패턴 매칭으로 R2 키 검색 후 삭제
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
- 1:1문의(QA) 첨부파일 업로드/다운로드 R2 연동
- 회원 아이콘/프로필 이미지 R2 마이그레이션
- 쇼핑몰 상품 이미지 R2 URL 지원
- 내용관리/FAQ 이미지 R2 마이그레이션
- 에디터 컨텐츠 URL R2 변환
- 관리자 회원 수정 R2 마이그레이션
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
- cheditor5, smarteditor2 에디터 이미지 업로드 지원
- get_editor_upload_url 훅을 통한 R2 스토리지 연동
- 업로드 성공 시 로컬 파일 자동 삭제
- Presigned URL 생성으로 보안 접근 제공
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
- SVG 파일 허용 (스크립트 검증 포함)
- 에러 코드 시스템 도입 (INVALID_FILE_ARRAY, EXT_NOT_ALLOWED 등)
- 모든 에러 메시지 한글화
- SVG 보안 검증 (script, onclick, javascript: 등 차단)
- getLastErrorCode(), getErrorMessage() 메서드 추가
사용자 친화적 에러 메시지:
- "허용되지 않는 파일 형식입니다."
- "파일 크기가 서버 설정 제한을 초과했습니다."
- "SVG 파일에 스크립트가 포함되어 있어 업로드할 수 없습니다."
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
- 블랙리스트(위험 확장자 차단) → 화이트리스트(허용 타입만 통과)
- 미디어/문서/압축 파일만 허용 (40+ 확장자)
- MIME 타입과 확장자 매핑으로 정확한 검증
- 이미지는 getimagesize()로 추가 검증
- 이중 확장자 탐지 유지 (test.php.jpg 차단)
- 동적 허용 타입 추가 기능 (addAllowedType)
보안 향상: 알려지지 않은 공격 벡터도 자동 차단
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
- 위험한 확장자 목록 확장 (50+ 확장자)
- 이중 확장자 탐지 (test.php.jpg → php 감지)
- finfo를 이용한 실제 MIME 타입 검증
- 파일 헤더 스캔으로 PHP/스크립트 시그니처 탐지
- Content-Type 스푸핑 공격 방어
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
- composer.json: PHP >= 8.1 요구
- composer.json: platform php 8.1.0 설정 추가
- composer.lock: 의존성 버전 잠금
- .gitignore: vendor 디렉토리 제외
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
- r2_migrate_board_files(): SQL 인젝션 방지를 위해 escape 처리
- r2_migrate_board_files(): 테이블명 정규식 검증 추가
- handleUpload(): 파일 배열 필수 키 체크 추가
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
- R2StorageAdapter: S3 호환 클라이언트 래퍼
- R2FileHandler: 그누보드 통합 핸들러
- Presigned URL 지원
- 유저별 경로 분리 (users/{member_id}/...)
- 대용량 파일 멀티파트 업로드 지원
- 로컬 스토리지 폴백
- DB 마이그레이션 스크립트 포함
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>