제출 전까진 서버에 안 보내기
이번 532편은 사용자가 입력폼을 제출할 때까지 파일을 서버에 업로드·저장하지 않게 하라는 규칙입니다.

KRDS CP-412 — 사용자가 입력폼을 제출할 때까지 파일을 서버에 업로드하거나 저장하고 있지 않다.
0. 들어가며 — 취소했는데 파일이 이미 서버에 있으면
이번 532편은 사용자가 입력폼을 제출할 때까지 파일을 서버에 업로드·저장하지 않게 하라는 규칙입니다.
파일을 선택하자마자 서버에 올려버리면 — 사용자가 폼을 취소하거나 파일을 바꿔도, 이미 올린 파일이 서버에 남죠. 개인정보 파일이라면 문제가 됩니다. CP-412는 제출 시점에 업로드하라고 규정합니다. 이번 편을 풀어냅니다.
1. 원문 — 제출까지 서버 업로드·저장 금지
CP-412 (컴포넌트 > 파일 업로드) “사용자가 입력폼을 제출할 때까지 파일을 서버에 업로드하거나 저장하고 있지 않다.”
파일을 선택했더라도 사용자가 폼을 최종 제출하기 전까지는 그 파일을 서버에 업로드·저장하지 말라는 뜻입니다.
정리: 폼 제출 전까지 파일을 서버에 올리지 마라. 이게 CP-412입니다.
2. 왜 제출 시점에 업로드인가
파일 업로드의 구현에는 — 두 가지 시점이 있습니다:
선택 즉시 업로드 — 사용자가 파일을 선택하자마자 — 바로 서버로 보내 저장하는 방식.
제출 시 업로드 — 파일은 — 사용자가 폼을 최종 제출할 때 함께 서버로 보내는 방식.
CP-412는 — 제출 시 업로드를 요구합니다. 선택 즉시 서버에 올리지 말라는 거죠.
선택 즉시 업로드의 문제:
취소해도 파일 남음 사용자가 파일을 선택해 서버에 올라간 뒤, 폼 작성을 취소하거나 이탈하면, 이미 올라간 파일이 서버에 남습니다. 사용자는 ’나는 제출 안 했는데 내 파일이 서버에 있다’는 걸 모르죠. 특히 주민등록등본·신분증 같은 개인정보·민감 파일이면, 제출하지도 않은 파일이 서버에 저장돼 개인정보 보호 문제가 됩니다.
교체해도 이전 파일 남음 — 잘못 올린 파일을 — 다른 파일로 바꿔도, 처음 올린 파일이 서버에 남을 수 있죠.
의도와 불일치 사용자는 ‘제출’ 버튼을 눌러야 ’내 정보를 제출했다’고 인식합니다. 그런데 선택만으로 서버에 저장되면, 사용자 의도(아직 제출 안 함)와 실제(이미 저장됨)가 어긋나죠.
불필요한 서버 저장 — 제출 안 할 파일까지 — 서버에 쌓여 저장 공간·정리 부담이 생깁니다.
그래서 CP-412는 — 파일을 폼 제출 시점에 업로드하라고 합니다:
클라이언트에 보관 — 사용자가 파일을 선택하면 — 우선 브라우저(클라이언트) 에만 보관합니다(미리보기·목록 표시). 서버로는 안 보내죠.
제출 시 전송 — 사용자가 — 모든 입력을 마치고 ‘제출’ 버튼을 누르면, 그때 파일을 폼 데이터와 함께 서버로 보냅니다. 제출이 곧 ’내 정보를 보낸다’는 사용자 의도와 일치하죠.
취소 시 흔적 없음 — 사용자가 취소·이탈하면 — 파일은 서버에 안 갔으니 흔적이 없습니다. 개인정보가 불필요하게 남지 않죠.
개인정보 보호 정신. 공공 서비스는 — 개인정보·민감 파일(신분증, 증명서)을 많이 받습니다. 제출 안 한 파일을 서버에 저장하지 않는 건 — 개인정보 최소 수집·보호 원칙과 직결되죠. 사용자가 명시적으로 제출한 것만 받습니다.
예외 대용량·청크 업로드. 매우 큰 파일을 제출 시 한 번에 보내면 시간이 걸려, 미리 청크로 올리는 기법도 있죠. 그 경우도 임시 저장이되 제출 전엔 ’미확정’으로 두고, 취소 시 삭제하는 정책으로 CP-412의 정신(제출 안 한 파일 미보관)을 지킵니다. 핵심은 제출하지 않은 파일을 영구 저장하지 않는 것입니다.
이 규칙은 파일 업로드의 ’제출 의도 일치·개인정보 보호’를 담당합니다 — 제출 시점에 업로드해(412), 사용자가 제출 하지 않은 파일이 서버에 남지 않게 하죠. 개인정보 최소화의 핵심입니다.
정리하면 — 선택 즉시 서버에 올리면 취소·이탈 시 제출 안 한 파일(특히 개인정보)이 서버에 남으므로, 파일을 폼 제출 시점에 전송해 사용자가 명시적으로 제출한 것만 저장해야 합니다.
3. 점검 / 개선
무엇을 점검하나
제출 시 업로드 — 파일이 폼 제출 시점에 서버로 전송되는가(선택 즉시 아님).
클라이언트 보관 — 선택한 파일이 제출 전엔 브라우저에만 있는가.
취소 흔적 없음 — 취소·이탈 시 제출 안 한 파일이 서버에 안 남는가.
개선 방향
선택 즉시 서버 업로드 제거. 제출 시점에 폼 데이터와 함께 전송.
클라이언트 미리보기·목록. 청크 업로드 시 미확정 임시 저장 + 취소 시 삭제.
4. 누가 담당하나 / 우리 사이트에 해당될까?
| 역할 | 책임 |
|---|---|
| 백엔드/개발 | 제출 시 업로드·임시 파일 정책 구현 |
| 보안/개인정보 | 개인정보 파일 보관 정책 |
| 기관 유형 | CP-412 적용 |
|---|---|
| 중앙행정기관(대표·운영) / 공공기관 / 지자체 | ✅ 필수 (개인정보 파일 업로드 시) |
개인정보·민감 파일을 받는 사이트에 특히 해당됩니다.
5. 30초 자가진단 + FAQ
✅ 30초 자가진단
□ 파일이 폼 제출 시점에 서버로 전송되나요(선택 즉시 아님)?
□ 선택한 파일이 제출 전엔 브라우저에만 있나요?
□ 취소·이탈 시 제출 안 한 파일이 서버에 안 남나요?
❓ FAQ
Q1. 선택 즉시 올리면 빠르지 않나요? 빨라 보이지만 취소·이탈 시 제출 안 한 파일(특히 개인정보)이 서버에 남습니다. 개인정보 보호상 제출 시점이 맞죠. Q2. 대용량 파일도 제출 시 한 번에 보내나요? 청크로 미리 올리는 기법도 있지만, 미확정 임시 저장 + 취소 시 삭제로 ‘제출 안 한 파일 미보관’ 정신을 지킵니다. Q3. 왜 개인정보 보호와 연결되나요? 신분증·증명서 등 민감 파일을 제출 안 했는데 서버에 남으면 개인정보 최소 수집 원칙에 어긋나죠.
6. 마무리
CP-412의 메시지:
제출 전까진 서버에 안 보내기 — 폼 제출 시점에 파일을 업로드하라.
선택 즉시 올리면 취소·이탈 시 제출 안 한 파일이 서버에 남습니다. 제출 시점에 전송해 사용자가 명시적으로 제출한 것만 저장하는 게 핵심이죠(개인정보 보호). 다음 편은 파일 오류 메시지입니다.
다음 편 예고 ▶ 「533. (CP-413) 오류 상태에 대한 구체적인 오류 메시지를 제공하고 있다.」
ViewCheck는 파일이 제출 시점에 업로드되는지를 진단합니다.
📚 참고 출처
KRDS 컴포넌트 — 파일 업로드(File upload) 가이드 — https://www.krds.go.kr/html/site/component/component_41.html
KRDS #ViewCheck #공공웹사이트 #전자정부 #디지털정부 #웹접근성 #디자인시스템 #UIUX #UI컴포넌트 #웹표준
KRDS,ViewCheck,공공웹사이트,전자정부,디지털정부,웹접근성,디자인시스템,UIUX,UI컴포넌트,웹표준

관련 글
다음 호는 언제?
이번 846편은 간행물 자료의 발행 주기 정보를 본문의 부제목이나 별도 안내 영역에 제공하라는 규칙입니다. 그리고 이 편이 — 846 규칙 완전 분해 시리즈의 마지막 한 편입니다.
방대한 자료를 효율적으로
이번 845편은 목록에 필터링, 정렬 방식, 상세 검색(기간, 자료 유형 등) 기능을 제공하여 정보를 효과적으로 조회하라는 규칙입니다. [정책 자료 탐색] 서브섹션의 시작이죠.
적힌 대로 가야 한다
이번 844편은 모든 링크는 실행하였을 때, 링크 레이블에 명시된 적절한 화면으로 이동하라는 규칙입니다.
