BOARD

팁·활용

그누보드 게시판 첨부파일 확장자 검증 스크립트 적용 방법

페이지 정보

profile_image
작성자 최고관리자
댓글 0건 조회 10회 작성일 26-10-06 17:23

본문

그누보드 게시판 첨부파일 확장자 검증 스크립트 적용 방법

그누보드 게시판 작성 폼에서 jQuery를 활용해 첨부파일 확장자를 검사하여 gif, jpg 이미지만 업로드되도록 제한하는 방법을 살펴봅니다.

게시판 첨부파일 확장자 제한 스크립트 적용 위치와 코드

게시글 작성 시 첨부파일의 확장자를 체크하여 이미지 파일(gif, jpg)만 업로드되도록 제한하려면, 사용 중인 게시판 스킨의 write.skin.php 하단 스크립트 부분에 jQuery 검증 코드를 추가해야 합니다.

1. 코드 추가 위치

해당 게시판 스킨 디렉토리 안의 write.skin.php 파일 하단(자바스크립트 영역 또는 fwrite_submit 함수 등 전송 관련 제출 함수 내부)에 적절히 추가합니다.

2. 추가할 jQuery 코드 예시

// 첨부 파일 이미지 체크
var imgno = "0"; // 파일 번호
var nono = "0"; // 에러 체크 변수

$("input[name=bf_file[]]").each(function() {
 var imgval = $(this).val();
 imgno++;
 if (!imgval.toLowerCase().match(/\.(gif|jpg)$/i)) { // 이부분의 확장자를 변경하시면 됩니다.
 alert(imgno + "번째 파일이 gif, jpg 파일(이미지파일)이 아닙니다.");
 nono = "1";
 return false;
 }
});

if (nono == 1) {
 return false;
}

3. 적용 후 확인 방법 및 주의사항

  • 허용되지 않은 확장자(예: txt, php 등) 파일을 첨부한 상태로 글 등록을 시도하여 경고창이 정상적으로 뜨는지 확인합니다.
  • 작성자 본인이 사내 또는 커뮤니티 공유 단계에서 '아직 검증하지 못한 상태'라고 명시한 코드이므로, 실제 운영 환경에 적용하기 전 테스트 게시판에서 정상 동작 여부를 반드시 점검해야 합니다.

서버 측 첨부파일 확장자 검증 필요성

클라이언트 측(자바스크립트) 검증 스크립트는 사용자가 개발자 도구 등을 통해 쉽게 우회할 수 있는 한계가 있습니다. 따라서 보안을 강화하고 악의적인 파일(예:.php,.asp,.jsp 등)이 서버에 업로드되어 실행되는 것을 방지하기 위해 서버 측 처리 파일(bbs/write_update.php)에서 확장자를 한 번 더 검사해야 합니다.

1. 서버 측 검증 위치 및 코드 예시

  • 수정 파일: bbs/write_update.php
  • 적용 위치: 파일 업로드가 처리되는 if (is_uploaded_file($tmp_file)) 조건문 내부에서 파일명 확장자를 검사합니다.
  • 코드 예시:
if (is_uploaded_file($tmp_file)) {
 // 허용하지 않는 확장자 차단 예시
 if (preg_match("/\.(php|asp|jsp)$/i", $filename)) {
 alert("허용되지 않는 파일 형식입니다.");
 }
}

2. 주의사항

  • 서버 측 검증은 보안의 필수 요소입니다. 클라이언트 검증만으로는 우회 가능성이 존재하므로, 반드시 서버 로직에서 허용할 확장자와 차단할 확장자 목록을 명확히 정의하여 적용해야 합니다.

상황별 첨부파일 확장자 제한 적용 가이드

내 상황우선할 판단다음 행동
그누보드 게시판 작성 폼에서 이미지(gif, jpg) 외 파일 업로드를 클라이언트 레벨에서 막고 싶을 때사용 중인 게시판 스킨의 write.skin.php 하단 스크립트 영역에 jQuery 검증 로직 추가input[name=bf_file[]] 값을 순회하여 허용되지 않은 확장자일 때 경고창과 함께 제출이 차단되는지 테스트 게시판에서 확인
자바스크립트 검증만으로는 우회될 위험이 있어 서버 보안을 강화하고 싶을 때서버 측 처리 파일(bbs/write_update.php)에서 업로드 파일의 확장자 재검증 수행is_uploaded_file 조건문 내부에 preg_match를 활용해 허용하지 않는 확장자 업로드 차단 로직 적용

실전 FAQ

Q. 자바스크립트로 확장자를 제한했는데도 사용자가 임의로 우회하여 다른 파일을 올리면 어떡하나요?

  • 예외 및 대안: 클라이언트 측(jQuery) 스크립트는 브라우저 개발자 도구 등으로 쉽게 우회될 수 있습니다. 따라서 안전한 운영을 위해 반드시 서버 측 파일인 bbs/write_update.php 내부에서 preg_match 등의 함수로 확장자를 한 번 더 검사해야 합니다.

Q. 스크립트를 적용한 뒤 '아직 검증하지 못한 상태'라는 문구가 신경 쓰입니다. 어떻게 검증해야 하나요?

  • 실행 중 막히는 지점: 작성자 본인이 검증 전이라고 언급한 코들이므로, 운영 중인 라이브 환경에 바로 적용하기 전 반드시 테스트 게시판에서 .txt나 .php 등 허용되지 않은 파일을 직접 첨부하여 경고창이 뜨고 제출이 막히는지 확인을 거쳐야 합니다.

함께 보면 좋은 글

참고자료

기타 참고자료

댓글목록

등록된 댓글이 없습니다.