그누보드7.1.0 업데이트하고 게시글 등록이 안됩니다
테마는 커스텀한 것입니다
답변 3개 / 댓글 2개
안녕하세요.
7.1.0 에 포함된 게시판 모듈 1.2.0 부터 글 저장 시 함께 보내는 임시 업로드 키(temp_key)를 UUID 형식으로만 받도록 변경되어 발생한 문제로 확인했습니다.
임시 업로드 키는 관리자 설정에서 입력하는 값이 아니라, 글쓰기 화면이 첨부파일과 게시글을 연결하기 위해 자동으로 생성하는 값입니다. (3f2b9c1e-8a4d-4f6b-9c2e-1d7a5b0e4c33 과 같은 형식의 고유 식별값)
7.1.0 이전 버전에서는 이 키를 조작해서 전송하면 서버의 다른 파일이 삭제될 수 있는 보안 취약점(KVE-2026-2349)이 발견되어, 형식이 맞지 않는 키는 422 오류로 거부하도록 수정하였습니다. 글쓰기 화면의 경우 첨부가 없어도 이 키를 항상 함께 전송하므로, 글쓰기만 해도 같은 오류가 발생하는 것입니다.
기본 템플릿(sirsoft-basic)은 7.1.0 에서 키를 {{$uuid()}} 로 만들도록 함께 변경되었습니다. 이전 템플릿은 'temp_' + Date.now() + ... 형태로 키를 만들었는데, 이 형식은 이제 사용할 수 없습니다. 과거 템플릿을 기준으로 템플릿을 개발하여 사용중이셨다면 예전 형식이 그대로 남아있어 발생하는 문제로 보입니다.
커스텀 템플릿에서 아래 두 곳을 기본 템플릿과 같게 맞춰주시기 바랍니다.
- layouts/board/form : tempKey 생성 부분을 {{$uuid()}} 로 변경 <set-state target="local" tempKey="{{$uuid()}}"/>
- layouts/partials/board/form/_post_form : 글 저장 요청과 첨부 업로드 요청에 _local.tempKey 를 temp_key 로 보내는지 확인
레이아웃 편집기로 수정해 두신 화면이 있다면 편집기에서도 함께 확인 부탁드립니다.
감사합니다.
오류 문구 기준으로 확인할 부분을 보완합니다. 7.1.0 공식 소스를 AI로 확인한 내용이며, 질문자님의 커스텀 테마에서 직접 재현한 결과는 아닙니다.
UUID는 사용자가 관리자 설정에 입력하는 값이 아니라, 글쓰기 화면이 임시 첨부와 게시글을 연결하려고 만드는 식별자입니다. 7.1.0의 StorePostRequest는 첨부 유무와 관계없이 temp_key를 검사하고, ValidatesTempKey의 규칙은 nullable·string·uuid입니다. 따라서 첨부가 없어도 잘못된 문자열이 전송되면 같은 오류가 납니다.
브라우저 개발자 도구의 Network에서 실패한 글 등록 요청의 temp_key 값만 먼저 확인해 보세요. 쿠키·인증 헤더나 요청 전체는 공개하지 마시고, 값이 정상 UUID인지 확인하면 됩니다. 잘못된 문자열이 들어간다면 커스텀 템플릿의 다음 두 부분을 7.1.0 기본 템플릿과 비교하는 것이 먼저입니다.
- layouts/board/form의 초기화: tempKey 값이 {{$uuid()}}로 생성되는지
- layouts/partials/board/form/_post_form의 저장 요청: temp_key에 _local.tempKey를 전달하는지. 첨부 업로드를 쓴다면 업로드에도 같은 키를 전달해야 합니다.
기본 테마로 전환한 별도 테스트에서 정상 등록되는지도 비교하면 범위를 좁힐 수 있습니다. 운영 테마 수정 전에는 백업을 권합니다. 서버의 uuid 검증을 없애는 방식은 피하세요. 키가 파일 경로에 사용되므로 형식 검증을 유지해야 합니다. #144는 레이아웃 경로 문제에 관한 이슈여서, 이 UUID 오류와 같은 원인이라고 단정하기는 어렵습니다.
확인한 7.1.0 원문:
temp_key 검증 규칙
기본 화면의 UUID 초기화
글 저장 시 키 전달
7.0.1 → 7.1.0을 말씀하신 것 아닐까요?
오타로 보고 답변드립니다.
저도 7.1.0 업데이트 당일 비슷한 게시글 등록 오류를 경험했습니다.
해결을 미루고 있다가 EthanforgeAI 님의 답변을 참고하여 확인해 보니,
7.1.0 업데이트에서 sirsoft-board 모듈의 temp_key 검증 규칙이 UUID 형식으로 변경되었는데,
기존 사용자 정의 템플릿에서는 여전히 temp_... 형태의 문자열을 생성하고 있었습니다.
이 때문에 게시글 등록 요청이 HTTP 422 오류로 거부된 것이었습니다.
기본 제공 sirsoft-basic 템플릿은 변경된 규칙에 맞게 구현되어 있어 정상이었고,
제 경우에는 커스텀 템플릿의 임시 업로드 키 생성 방식을 UUID로 변경하니 해결됐습니다.
결론적으로 이번 게시글 등록 오류는 7.1.0의 변경된 검증 규칙과 기존 커스텀 템플릿 사이의 호환성 문제였습니다.
코어를 직접 수정하지 않고 커스텀 템플릿에서 대응할 수 있었습니다.
비슷한 증상이라면 먼저 사용 중인 템플릿의 temp_key 생성 방식을 확인해 보시는 것이 좋겠습니다.
답변을 작성하려면 로그인이 필요합니다.
미루다가 님의 정확한 조언으로 해결했습니다.
감사합니다.