사례 연구

홈페이지 문의 폼에 사진·도면 첨부 칸을 붙인 기록: 최대 5개, 개당 10MB, 전체 18MB로 정한 이유

제조업 고객사 홈페이지 문의 폼에 부품 사진과 도면을 바로 붙일 수 있게 만든 실제 기록. 파일 개수·용량·형식 제한을 어떻게 정했는지, 같은 검사를 화면과 서버에서 두 번 하는 이유, 전송이 실패해도 적은 글이 남게 한 방법, 그리고 사장님이 휴대폰으로 확인할 것 하나.

홈페이지 문의 폼파일 첨부홈페이지 수정유지보수사례
Gaebari

문의는 글로 오고, 파일은 메일로 따로 왔습니다

지방의 한 제조업 고객사(비파괴검사 장비·시제품 제작, 업체명 비공개) 홈페이지입니다. 이 회사에 들어오는 문의는 "이 부품 검사가 되나요", "이 도면대로 시제품을 만들 수 있나요" 같은 것입니다. 글만으로는 답하기 어렵습니다. 부품 사진이나 도면을 봐야 가능 여부와 견적이 나옵니다.

그런데 문의 폼에는 이름, 연락처, 문의 내용 칸만 있었습니다. 그래서 문의가 들어오면 담당자가 "사진은 메일로 보내 주세요"라고 답하고, 고객이 메일을 새로 써서 파일을 붙이고, 담당자가 그 메일을 처음 문의와 짝지었습니다. 문의 한 건에 연락이 두 번 오갔습니다.

첨부 칸이 없을 때와 붙인 뒤, 사진과 도면이 담당자에게 도착하는 순서 (도식)

2026년 8월 26일에 문의 폼에 첨부 칸을 붙였습니다. 이 글은 그때 정한 숫자와 그 이유를 적은 기록입니다.

정한 것 4가지

1. 받을 파일 형식: 10가지만

사진(jpg, jpeg, png, webp)과 PDF, 그리고 설계 파일(dxf, step, stp, igs, iges)입니다. 이 회사 고객이 실제로 보내는 파일이 이 범위입니다. 그 밖의 형식은 받지 않습니다.

"아무 파일이나 받기"가 편해 보이지만 문의 폼은 누구나 쓸 수 있는 입구입니다. 실행 파일 같은 것이 담당자 메일함까지 들어오면 안 됩니다. 필요한 형식만 적어 두고 나머지는 거절하는 쪽이 안전합니다.

Ensure the usage of business-critical extensions only, without allowing any type of non-required extensions.

2. 개수와 용량: 5개, 개당 10MB, 전체 18MB

파일은 서버에 쌓아 두지 않고 담당자 메일에 첨부로 실어 보냅니다. 담당자는 평소 쓰던 메일함에서 글과 파일을 같이 받습니다. 그래서 상한은 메일이 감당할 수 있는 크기에서 거꾸로 계산했습니다.

파일을 메일에 실으려면 글자로 바꿔야 하고, 이때 3바이트가 글자 4개가 됩니다. 용량이 약 1.33배로 늘어납니다. 18MB를 보내면 메일 안에서는 약 24MB입니다. 전체 상한 18MB는 이 늘어난 크기가 메일 서비스의 크기 제한 안쪽에 들어오도록 잡은 숫자입니다.

The encoding process represents 24-bit groups of input bits as output strings of 4 encoded characters.

개당 10MB는 휴대폰 사진 한 장과 도면 PDF 한 부가 넉넉히 들어가는 크기입니다. 이 숫자들은 첨부 칸 바로 옆에 적혀 있습니다. 고객이 파일을 고르기 전에 볼 수 있어야 하기 때문입니다.

고객사 문의 폼의 첨부 칸. 시험용 파일 2개를 붙인 화면 (업체명이 없는 부분만 잘라 냄)

3. 검사는 두 번: 화면에서 한 번, 서버에서 한 번

파일을 고르는 순간 화면이 개수, 용량, 형식을 검사합니다. 어긋나면 "파일이 10MB를 초과합니다" 같은 안내가 바로 나옵니다. 보내기를 누르고 한참 기다린 뒤에 실패를 아는 것보다 낫습니다. 붙인 파일은 목록으로 보이고 하나씩 뺄 수 있습니다.

서버도 같은 검사를 처음부터 다시 합니다. 화면의 검사는 고객을 돕는 장치이고, 막는 장치는 서버에 있어야 합니다. 화면을 거치지 않고 서버로 바로 보내는 요청은 화면의 검사를 지나가지 않기 때문입니다.

“Input validation must be implemented on the server-side before any data is processed by an application's functions, as any JavaScript-based input validation performed on the client-side can be circumvented by an attacker who disables JavaScript or uses a web proxy.”
OWASP Cheat Sheet Series — Input Validation Cheat Sheet, OWASP

4. 실패해도 적은 글은 남게

전송이 실패하면 화면에 실패 안내와 함께 "이메일로 직접 문의하기" 링크가 나옵니다. 이 링크를 누르면 고객이 폼에 적었던 이름, 연락처, 문의 내용이 메일 본문에 채워진 채로 열립니다. 고객이 같은 글을 두 번 쓰지 않습니다.

문의 기록에는 글과 함께 파일 이름, 크기만 남깁니다. 파일 자체는 담당자 두 명의 메일로만 갑니다.

서버는 파일 개수, 크기, 확장자를 화면과 별개로 다시 검사한다. 화면의 검사는 건너뛸 수 있으므로 믿지 않는다.

전후

작업 전작업 후
사진·도면 보내는 방법문의를 남긴 뒤 메일로 따로문의 폼에서 같이
문의 한 건에 오가는 연락2번1번
받는 파일제한 없음(메일)형식 10가지, 최대 5개, 개당 10MB, 전체 18MB
잘못된 파일걸러 주는 장치 없음서버가 돌려보냄, 저장도 발송도 안 함
전송 실패 시해당 없음적은 글이 채워진 메일 링크 제공

잘못된 첨부 4가지를 서버로 바로 보낸 결과. 모두 400으로 돌려보낸다 (2026-09-28 실제 실행)

위 검사는 이 글을 쓰는 날 고객사 사이트의 사본을 시험 환경에 띄워 다시 실행한 결과입니다. 실제 사이트에는 시험용 문의를 넣지 않았습니다. 실제 사이트에서는 문의 페이지에 첨부 칸이 나오는지, 문의 주소가 두 주소(www 유무) 모두에서 응답하는지만 확인했습니다.

첨부 칸을 붙이기 전의 화면은 당시 캡처를 남기지 않아 없습니다.

이 문의 폼은 며칠 뒤 다른 업데이트 작업 때문에 잠시 멈춘 적이 있습니다. 그 기록은 내용 업데이트 뒤 문의 폼이 죽어 있던 사례에 있습니다.

사장님이 직접 확인할 체크 항목 1개

휴대폰으로 본인 홈페이지 문의 폼을 열고, 사진 1장을 붙여 테스트 문의를 보내 보세요. 그리고 받은 메일을 열어 사진이 같이 왔는지 봅니다. 확인할 것은 세 가지입니다.

  1. 첨부 칸이 있는가. 없으면 고객은 사진을 보낼 방법을 따로 물어봐야 합니다.
  2. 휴대폰에서 사진이 붙는가. 컴퓨터에서 되는 것과 따로 봐야 합니다.
  3. 메일에 사진이 실제로 들어 있는가. 화면에 "접수되었습니다"가 나오는 것과 파일이 도착하는 것은 별개입니다.

고객은 부품을 휴대폰으로 찍어서 그 자리에서 보냅니다. 컴퓨터로만 확인하면 휴대폰에서 생기는 문제를 놓칩니다.

점검은 무료, 새 기능은 견적부터

개바리는 문의 폼이 제대로 도착하는지 확인하고 고치는 일을 매달 무료 수정 1건으로 먼저 해 드립니다. 홈페이지 주소만 알려 주시면 됩니다. 첨부 칸처럼 기능을 새로 붙이는 작업은 시작하기 전에 금액을 확정해서 말씀드립니다.

자주 묻는 질문

문의 폼에 파일 첨부를 붙이면 아무 파일이나 받게 되나요?

아닙니다. 받을 형식을 정해 두고 그 밖의 파일은 서버가 돌려보냅니다. 이 사례는 사진 4종, PDF, 설계 파일 5종만 받습니다. 돌려보낸 문의는 저장되지 않고 담당자 메일로도 가지 않습니다.

전체 용량이 왜 20MB나 25MB가 아니라 18MB인가요?

파일을 메일에 실으면 용량이 약 1.33배로 늘어납니다. 18MB는 메일 안에서 약 24MB가 됩니다. 늘어난 크기가 메일 서비스의 크기 제한 안쪽에 들어오도록 거꾸로 계산한 숫자입니다.

18MB보다 큰 설계 파일은 어떻게 받나요?

문의 폼으로는 받지 않습니다. 문의를 먼저 남기고, 큰 파일은 담당자가 안내하는 드라이브 링크로 보내는 편이 안정적입니다. 폼의 상한을 올리면 메일 전달이 실패하는 문의가 생길 수 있습니다.

홈페이지를 만든 업체와 연락이 안 되는데 첨부 칸을 붙일 수 있나요?

홈페이지 파일이 올라가 있는 곳의 접속 정보가 있으면 대부분 됩니다. 이 고객사도 문의를 받는 처리기의 원본이 남아 있지 않아, 같은 동작을 하는 처리기를 새로 만들어 붙였습니다.