기본 콘텐츠로 건너뛰기

JavaScript로 첨부파일 확장자 검사하기

JavaScript로 첨부파일 확장자 검사하기

AI 생성 이미지: JavaScript로 첨부파일 확장자 검사하기
AI 생성 이미지: JavaScript로 첨부파일 확장자 검사하기

🤖 AI 웹 서비스용 파일 업로드 보안 구현

AI 기반 웹 애플리케이션에서는 사용자가 생성한 AI 결과물이나 LLM 분석 파일을 업로드하도록 허용하는 경우가 많습니다. 이때 클라이언트 검증 없이 파일을 수신하면 .jsp, .exe 같은 실행 파일이 서버에 저장되어 보안 사고로 이어질 수 있습니다.

다음 예제는 결과 파일을 안전하게 제한하기 위한 간단한 프런트엔드 검사입니다. PDF, TXT, CSV 같은 형식만 허용하고 그 외 확장자는 차단합니다. 이 페이지는 JavaScript로 첨부파일 확장자 검사하기 목적에 맞춘 실용적 예제를 제공합니다.

🧠 코드 예제


  const MSG_FILE_EXT_INVALID = "{0} 형식의 파일은 업로드할 수 없습니다.";
  const ALLOWED_EXT = ["pdf", "txt", "csv", "json"];
  const BLOCKED_EXT = ["jsp", "php", "exe", "dll", "asp", "aspx", "js", "bat"];

  function validateAIUpload(files) {
      for (let i = 0; i < files.length; i++) {
          const fileName = files[i].name;
          const ext = fileName.split('.').pop().toLowerCase();

          // 금지 확장자 차단
          if (BLOCKED_EXT.includes(ext)) {
              alert(MSG_FILE_EXT_INVALID.replace("{0}", "." + ext));
              return false;
          }

          // 허용 확장자 외에는 업로드 금지
          if (!ALLOWED_EXT.includes(ext)) {
              alert(MSG_FILE_EXT_INVALID.replace("{0}", "." + ext));
              return false;
          }
      }

      alert("✅ 파일 검증 완료! 업로드 가능합니다.");
      return true;
  }
  

🧩 업로드 폼 예제


  <form id="uploadForm" onsubmit="return false;">
      <h4>AI 모델 결과 파일 업로드</h4>
      <input type="file" id="aiFile" multiple onchange="validateAIUpload(this.files)" />
  </form>
  

🔍 코드 설명

  • ALLOWED_EXT → 업로드를 허용할 확장자 목록(예: PDF, TXT, CSV)
  • BLOCKED_EXT → 즉시 차단할 위험 확장자 목록(예: JSP, EXE 등)
  • alert() → 사용자에게 금지된 파일임을 알리는 간단한 피드백 수단
  • validateAIUpload() → 파일 배열을 순회하면서 확장자를 확인해 허용/차단을 결정

⚠️ 보안 팁

이 JavaScript 검사는 기본적인 프런트엔드 필터이며, 절대 단독 방어막으로 의존해서는 안 됩니다. 서버 측에서 MIME 타입과 확장자, 파일 내용(시그니처) 검사를 추가해 이중으로 검증해야 실제 공격을 방지할 수 있습니다. 또한 파일 이름에 여러 점(.)이 포함된 경우나 대소문자 혼합 확장자도 고려하세요.

🧠 확장 응용 (AI 업로드 시스템)

예를 들어, LLM이 생성한 리포트를 PDF로 저장한 뒤 다시 업로드해 자동 요약이나 품질 검사를 수행하는 워크플로우에서는 프런트엔드에서 JavaScript로 첨부파일 확장자 검사하기를 먼저 실행하고, 서버에서 심층 검사를 이어가는 방식이 안전합니다.


  // AI 분석 전용 업로드 (PDF만 허용)
  function validateAIDocUpload(files) {
      const ALLOWED_AI_DOC = ["pdf"];
      for (const file of files) {
          const ext = file.name.split('.').pop().toLowerCase();
          if (!ALLOWED_AI_DOC.includes(ext)) {
              alert("AI 문서 업로드는 PDF만 허용됩니다.");
              return false;
          }
      }
      alert("AI 문서 검증 완료!");
      return true;
  }
  

🚀 이 주제, 우리 서비스에 어떻게 적용할까요?

JavaScript로 첨부파일 확장자 검사하기를 실제 서비스와 조직에 녹여보고 싶다면, 현재 아키텍처와 운영 방식을 한 번 점검해 보는 것부터 시작해 보세요. 팀 위키나 기술 블로그, 사내 스터디 주제로도 아주 좋습니다.

이 글이 도움이 됐다면, 비슷한 엔터프라이즈 사례 글들도 함께 살펴보면서 우리 조직에 맞는 운영 상용구를 정의해 보세요.

AI 생성 이미지: JavaScript로 첨부파일 확장자 검사하기
AI 생성 이미지: JavaScript로 첨부파일 확장자 검사하기

댓글

이 블로그의 인기 게시물

Java Servlet Request Parameter 완전 정복 — GET/POST 모든 파라미터 확인 & 디버깅 예제 (Request Parameter 전체보기)

Java Servlet Request Parameter 완전 정복 — GET/POST 모든 파라미터 확인 & 디버깅 예제 Java Servlet Request Parameter 완전 정복 웹 애플리케이션에서 클라이언트로부터 전달되는 Request Parameter 를 확인하는 것은 필수입니다. 이 글에서는 Java Servlet 과 JSP 에서 GET/POST 요청 파라미터를 전체 출력하고 디버깅하는 방법을 다양한 예제와 함께 소개합니다. 1. 기본 예제: getParameterNames() 사용 Enumeration<String> params = request.getParameterNames(); System.out.println("----------------------------"); while (params.hasMoreElements()){ String name = params.nextElement(); System.out.println(name + " : " + request.getParameter(name)); } System.out.println("----------------------------"); 위 코드는 요청에 포함된 모든 파라미터 이름과 값을 출력하는 기본 방법입니다. 2. HTML Form과 연동 예제 <form action="CheckParamsServlet" method="post"> 이름: <input type="text" name="username"><br> 이메일: <input type="email" name="email"><b...

PostgreSQL 달력(일별,월별)

SQL 팁: GENERATE_SERIES로 일별, 월별 날짜 목록 만들기 SQL 팁: GENERATE_SERIES 로 일별, 월별 날짜 목록 만들기 데이터베이스에서 통계 리포트를 작성하거나 비어있는 날짜 데이터를 채워야 할 때, 특정 기간의 날짜 목록이 필요할 수 있습니다. PostgreSQL과 같은 데이터베이스에서는 GENERATE_SERIES 함수를 사용하여 이 작업을 매우 간단하게 처리할 수 있습니다. 1. 🗓️ 일별 날짜 목록 생성하기 2020년 1월 1일부터 12월 31일까지의 모든 날짜를 '1 day' 간격으로 생성하는 쿼리입니다. WITH date_series AS ( SELECT DATE(GENERATE_SERIES( TO_DATE('2020-01-01', 'YYYY-MM-DD'), TO_DATE('2020-12-31', 'YYYY-MM-DD'), '1 day' )) AS DATE ) SELECT DATE FROM date_series 이 쿼리는 WITH 절(CTE)을 사용하여 date_series 라는 임시 테이블을 만들고, GENERATE_SERIES 함수로 날짜를 채웁니다. 결과 (일별 출력) 2. 📅 월별 날짜 목록 생성하기 동일한 원리로, 간격을 '1 MONTH' 로 변경하면 월별 목록을 생성할 수 있습니다. TO...

CSS로 레이어 팝업 화면 가운데 정렬하는 방법 (top·left·transform 완전 정리)

레이어 팝업 센터 정렬, 이 코드만 알면 끝 (CSS 예제 포함) 이벤트 배너나 공지사항을 띄울 때 레이어 팝업(center 정렬) 을 깔끔하게 잡는 게 생각보다 어렵습니다. 화면 크기가 변해도 가운데에 고정되고, 모바일에서도 자연스럽게 보이게 하려면 position , top , left , transform 을 정확하게 이해해야 합니다. 이 글에서는 아래 내용을 예제로 정리합니다. 레이어 팝업(center 정렬)의 기본 개념 자주 사용하는 position: absolute / fixed 정렬 방식 질문에서 주신 스타일 top: 3.25%; left: 50%; transform: translateX(-50%) 의 의미 실무에서 바로 쓰는 반응형 레이어 팝업 HTML/CSS 예제 1. 레이어 팝업(center 정렬)이란? 레이어 팝업(레이어 팝업창) 은 새 창을 띄우는 것이 아니라, 현재 페이지 위에 div 레이어를 띄워서 공지사항, 광고, 이벤트 등을 보여주는 방식을 말합니다. 검색엔진(SEO) 입장에서도 같은 페이지 안에 HTML이 존재 하기 때문에 팝업 안의 텍스트도 정상적으로 인덱싱될 수 있습니다. 즉, “레이어 팝업 센터 정렬”, “레이어 팝업 만드는 방법”과 같이 관련 키워드를 적절히 넣어주면 검색 노출에 도움이 됩니다. 2. 질문에서 주신 레이어 팝업 스타일 분석 질문에서 주신 스타일은 다음과 같습니다. <div class="layer-popup" style="width:1210px; z-index:9001; position:absolute; top:3.25%; left:50%; transform:translateX(-50%);"> 레이어 팝업 내용 <...