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

본문
그누보드 게시판 첨부파일 확장자 검증 스크립트 적용 방법
그누보드 게시판 작성 폼에서 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등 허용되지 않은 파일을 직접 첨부하여 경고창이 뜨고 제출이 막히는지 확인을 거쳐야 합니다.
함께 보면 좋은 글
- 그누보드 글쓰기 폼 특정 필드 숫자만 입력 제한 스크립트 적용 방법
- 그누보드 관리자 페이지 메타태그 및 스크립트 설정 오류로 인한 접근 불가 해결 방법
- 그누보드5 카카오 우편번호 서비스 CDN 경로 업데이트 및 스크립트 오류 해결 방법
참고자료
기타 참고자료
- 이전글그누보드 게시판 목록 내 최신 코멘트 존재 시 코멘트 수 강조 표시 방법 26.10.06
- 다음글그누보드 검색 결과 특정 그룹(grid)으로 제한하기 26.10.06
댓글목록
등록된 댓글이 없습니다.