또다른공고 [버그] UpdateBoardRequest가 use_file_upload=false에서도 allowed_extensions를 …
페이지 정보

조회 25회 작성일 26-07-19 20:56
본문
## 증상 요약
게시판 수정 화면에서 **첨부파일 사용을 비활성화(use_file_upload=false)** 한 상태로 저장하면, `allowed_extensions` 검증 오류가 발생하여 저장이 실패합니다.
---
## 재현 절차
1. 관리자 -> 게시판 관리 -> 기존 게시판 수정
2. "첨부파일 사용"을 비활성화
3. 저장 버튼 클릭
---
## 기대한 동작
첨부파일 사용이 비활성화된 경우에는 허용 확장자 설정이 사용되지 않으므로 정상적으로 저장되어야 합니다.
---
## 실제 동작
다음과 같은 Validation 오류가 발생하며 저장되지 않습니다.
```json
{
"message": "허용 파일 확장자를 최소 1개 이상 입력해야 합니다.",
"errors": {
"allowed_extensions": [
"허용 파일 확장자를 최소 1개 이상 입력해야 합니다."
]
}
}
```
실제 요청 Payload는 다음과 같습니다.
```json
{
"use_file_upload": false,
"allowed_extensions": []
}
```
---
## 환경 정보 (필수)
- **코어 버전**: 7.0.4
- **업그레이드 전 -> 후 버전**: 해당 없음 (신규 설치)
- **PHP 버전**: 8.3.x
- **웹서버·실행 방식**: Nginx + PHP-FPM
- **DB**: MariaDB 10.11.x
- **OS**: Linux
---
## 활성 확장 목록 (해당 시)
```text
sirsoft-board
```
---
## 재현 환경
순정 설치 환경 (코어 수정 및 커스텀 확장 없음)
---
## 스크린샷·로그
브라우저 응답(JSON)
```json
{
"message": "허용 파일 확장자를 최소 1개 이상 입력해야 합니다.",
"errors": {
"allowed_extensions": [
"허용 파일 확장자를 최소 1개 이상 입력해야 합니다."
]
}
}
```
---
## 추가 정보
원인을 확인한 결과 `StoreBoardRequest`와 `UpdateBoardRequest`의 검증 정책이 서로 달랐습니다.
`StoreBoardRequest`는 첨부파일 사용이 비활성화된 경우 `allowed_extensions` 검증을 제외하지만,
`UpdateBoardRequest`는 다음 규칙이 적용되어 있었습니다.
```php
'allowed_extensions' => ['sometimes', 'array', 'min:1'],
```
관리 화면에서는 `use_file_upload=false`인 경우에도
```json
{
"allowed_extensions": []
}
```
가 함께 전송되므로 `min:1` 검증에 의해 저장이 실패했습니다.
정책상 다음과 같이 동작하는 것이 일관된 동작이라고 판단됩니다.
- `use_file_upload=true` + `allowed_extensions=[]` -> Validation 실패
- `use_file_upload=true` + 확장자 지정 -> 정상
- `use_file_upload=false` -> `allowed_extensions` 검증 제외
- `allowed_extensions` 미전송(부분 수정) -> 정상
이 문제는 프런트엔드가 비활성 상태의 필드를 전송해서 발생하는 단순 UI 문제라기보다, 서버 측 검증이 use_file_upload 조건을 반영하지 않아 발생하는 요청 검증 정책의 불일치입니다. 따라서 프런트엔드에서 allowed_extensions를 제거하는 방식만으로 우회하기보다, UpdateBoardRequest의 검증 규칙을 StoreBoardRequest와 동일한 조건부 정책으로 맞추는 것이 적절합니다.
- 다음글GenerateSitemapJob 누적 데이터 확장성 문제 및 개선안 - 사이트맵 문제 26.07.19