그누보드 첨부파일 직접 다운로드 링크 추출 방법과 설정
페이지 정보

본문
그누보드 첨부파일 직접 다운로드 링크 추출 방법과 설정
그누보드 게시판의 첨부파일 다운로드 링크를 외부나 다른 곳에서 직접 사용할 수 있도록 추출하려는 운영자와 개발자를 위한 설정 방법과 주의사항을 안내합니다.
그누보드 첨부파일 외부 및 직접 다운로드 링크 추출 방법
그누보드는 기본적으로 보안 이슈로 인해 첨부파일에 대한 직접 링크를 허용하지 않습니다. 외부나 다른 곳에서 사용할 수 있는 직접 다운로드 링크를 추출하려면, 세션 및 권한 검증 코드를 우회하는 전용 다운로드 파일을 생성하고 게시판 스킨을 수정해야 합니다.
1. 다운로드 파일 생성 및 코드 우회 설정
bbs/download.php파일을 복사하여download2.php이름으로 생성하여 업로드합니다.download2.php파일 내부의 세션 검증 및 다운로드 권한 체크 코드를 주석 처리합니다.
- 세션 검증 코드 수정 (7~8라인 원본 및 수정)
// 원본
if (!get_session("ss_view_{$bo_table}_{$wr_id}")) alert("잘못된 접근입니다.");
// 수정
//if (!get_session("ss_view_{$bo_table}_{$wr_id}"))
// alert("잘못된 접근입니다.");
- 다운로드 권한 체크 코드 수정 (16~22라인 원본 및 수정)
// 원본
if ($member[mb_level] < $board[bo_download_level]) {
$alert_msg = "다운로드 권한이 없습니다.";
if ($member[mb_id]) alert($alert_msg);
else alert($alert_msg. "\\n\\n회원이시라면 로그인 후 이용해 보십시오.", "./login.php?wr_id=$wr_id&$qstr&url=".urlencode("$g4[bbs_path]/board.php?bo_table=$bo_table&wr_id=$wr_id"));
}
// 수정
//if ($member[mb_level] < $board[bo_download_level]) {
// $alert_msg = "다운로드 권한이 없습니다.";
// if ($member[mb_id])
// alert($alert_msg);
// else
// alert($alert_msg. "\\n\\n회원이시라면 로그인 후 이용해 보십시오.", "./login.php?wr_id=$wr_id&$qstr&url=".urlencode("$g4[bbs_path]/board.php?bo_table=$bo_table&wr_id=$wr_id"));
//}
2. 게시판 스킨(view.skin.php) 수정
사용 중인 게시판 스킨의 view.skin.php 파일을 열어 가변 파일 출력 부근의 코드를 수정합니다. 관리자 레벨(레벨 10 이상)일 경우 화면에 직접 다운로드 주소가 노출되도록 설정합니다.
- 수정 예시 코드
// 가변 파일 출력부 수정
//echo "</a></td></tr>";
echo "</a>";
if($member[mb_level] >= 10) { // 권한체크
echo "<br />http://홈페이지주소/gnuboard/bbs/download2.php?bo_table={$bo_table}&wr_id={$wr_id}&no={$i}";
}
echo "</td></tr>";
3. 적용 결과 확인
- 관리자 계정으로 게시물 상세 페이지에 접속하여 첨부파일 하단에 직접 다운로드 URL이 표시되는지 확인합니다.
- 출력된 링크를 복사하여 외부에서 로그인 없이 파일 다운로드가 정상 작동하는지 테스트합니다.
주의사항: 세션 체크와 권한 검증 코드를 우회하므로 보안 이슈가 발생할 수 있습니다.
첨부파일 다운로드 링크 외부 추출 시 보안 이슈와 대비 방안
그누보드 환경에서 첨부파일을 외부나 다른 곳에서 직접 사용할 수 있도록 download.php 파일의 세션 체크 및 다운로드 권한 체크 코드를 주석 처리하여 우회하는 경우, 다음과 같은 보안 문제가 발생할 수 있습니다.
발생 가능한 보안 이슈
- 권한 검증 누락 및 무단 다운로드: 원래 그누보드는 게시물 조회 시 생성되는 세션(
ss_view_{$bo_table}_{$wr_id})과 게시판 설정된 회원 다운로드 레벨($board[bo_download_level])을 검사하여 파일 접근을 통제합니다. 해당 코드를 해제하면 로그인 여부나 다운로드 권한, 게시물 조회 세션과 무관하게 누구나 URL만 알면 파일을 직접 다운로드할 수 있게 됩니다. - 직접 링크 노출에 따른 리스크: 관리자 권한(
$member[mb_level] >= 10) 이상일 때 직접 다운로드 주소가 화면에 노출되도록 설정하더라도, 노출된 링크 주소가 외부에 유출될 경우 권한 통제 없이 파일에 접근할 수 있는 보안 취약점이 발생합니다.
안전한 운영을 위한 대비 방안
- 접근 제한 및 대체 로직 검토: 불특정 다수에게 파일을 공개해야 하는 경우가 아니라면 세션 및 권한 체크 코드를 무력화하는 우회 방식 대신, 인증된 사용자나 특정 조건에서만 유효한 안전한 링크 생성 방식을 검토해야 합니다.
- 원상복구 준비: 보안 이슈나 비정상적인 트래픽 증가 등 문제가 발견될 경우 즉시 생성한
download2.php파일을 삭제하고 게시판 스킨 파일(view.skin.php)의 수정내역을 원본 상태로 복원할 수 있도록 준비해야 합니다.
함께 보면 좋은 글
참고자료
기타 참고자료
- 이전글그누보드 아웃로그인 닉네임 대신 실명 출력하기 26.10.06
- 다음글그누보드 특정 조건 회원 일괄 삭제 및 정리 방법 26.10.06
댓글목록
등록된 댓글이 없습니다.