웹호스팅 환경에서의 그누보드 보안 권고 사항(1) > 그누3 팁자료실

그누3 팁자료실

웹호스팅 환경에서의 그누보드 보안 권고 사항(1) 정보

웹호스팅 환경에서의 그누보드 보안 권고 사항(1)

본문

제 나름데로 정리한것입니다.
이하 경어체는 사용하지 않겟습니다.


일단 어느 공개형 웹솔루션이던 웹호스팅 환경에서는 100%프로 보안상 자유로울수 없다.

그러나 그누보드의 사용자층이 많아지고 활용도가 넓어지면서, 그누보드의 보안상의 문제를 짚고 넘어가지 않을수 없다.

물론 그누보드를 사용함으로서 일어나는 모든 문제는 제작자는 책임을 지지 않는다. 단, 자료를 소실했을 때의 사용자나 관리자는 엄청난 고통이 따를것이다.

웹호스팅을 햇을 경우의 특징
1. 하나의 서버에 많은 계정이 존재한다.

2. 대부분 각계정의 홈디렉토리 절대경로를 알수 있다.

3. 모든 계정의 파일들은 경로만 알면 웹서버 권한으로 페이지 전체를 읽어올수 있다.

공개솔루션의 특징
1. 사용하는 사람들이 모두 중요 환경설정 경로를 알고 있다.

2. 사용하는 사람들이 소스의 수정, 조작 방벙을 알고 있고 수정, 조작도 용이하다.

이러한 특징들로 인해 그누보드는 웹호스팅 환경에서 절대 자유로울 수없다.

그누보드는 index.php에서 공통적 처리를 하고 $doc라는 변수를 통해 세부페이지 처리를 한다.
$doc는 외부출신의 변수이고, get 이나 post 아무거나로 값을 넘겨도 관계없다.

문제는 여기서 부터 출발한다.

1. $doc의 인클루드 문제
-> 현재는 ://가 포함되어있을 경우나 값이 없을때에만 $doc를 main.php로 값을 변경한다.
-> 여기서 문제.......
-> 웹호스팅 환경이라는 것은 위에서 설명했듯이 하나의 서버에 여러 계정이 존재한다.
-> 서로 다른 계정에 동일한 그누보드가 설치되어있다면
-> 또한 도메인이나 사용url을 알고 있다면
-> 간단하게 $doc에 절대경로로서의 특수목적의 파일의 값을 대입시키면
-> 같은 서버내의 파일이므로 인클루드 되어 처리된다.
-> 문제는 이미 index.php상단에서 $doc가 인클루드 되기 전에
-> 디비연결이 되어잇다는 것이다.
-> 즉, 같은 서버내의 다른 계정의 파일을 인클루드 시켜서, 원래의 사이트의 디비정보나 내부데이터 파일, data 이하 경로의 데이터를 조작할수 있다.

따라서 index.php에서 $doc를 인클루드 하는 방법에서
if (empty($doc) || strpos($doc, "://") || strpos($doc, "../") || preg_match("|^/|", $doc)) {
    $doc = './main.php';
}
이런형태로 ../를 포함하거나, $doc값의 시작이 /로 되는것 역시 막아야 한다.
추천
0

댓글 전체

경로문제나 접근에 관해서는 '그누보드' 만의 문제가 아니지요.
타 서버사이드스크립트(언어)는 차치하고서라도,
웬만한 php 보드 프로그램은 그 실행과 접근경로가 노출됩니다.

자바스크립트나 기타 직접적인 소스보기를 차단시키는 방법을
사용한다고 하더라도...
(이런 부분은, 웹브라우저 종류만 달리해도 아주 손쉽게 접근할 수 있습니다.)

유저층이 두텁다고 하는 제로보드 또한,
마찬가지로 실행 및 접근경로가 노출됩니다.

이러한 부분은 어떻게 설명해야 할까요?
만약에 접근경로나 모든것을 알았다고 하더라고
옆구리로 즉..직접적인 경로를 쳐서 들어온다면
모두 인덱스로 돌려버리면 되지않을 까요??

물론 아이프레임을 쓴 홈페이지 같은경우에는 모두 인덱스로 돌려버리는 경우에
심오한 작업이 있을 수 있지만 ...

이런것은 효과가없을라나요??......
방법(*^^*)일 수 있겠네요.
현재 M-club님께서 운영하시는 사이트가
말씀하신 방식으로 돌아가고 있습니다.

너무 복잡하지 않은 부분만
즉, 해당되는 자바스크립트와 적용된 간단한
예제파일을 공개해 주시면 얼마나 좋을까요~*^^*
기존에 등록된 팁텍이지만,
적용에 실패한 터라...
히든프레임을 활용해,
홈페이지 초기 경로를 잡아준 경우,
약간의 문제가 발생되는데,
그 부분을 해결하지 못해서
결국은 손 들어 버렸습니다.
예전에...이곳에다가 관련하는 것을 등록했었는데요..
그것도 엄청난 실험과 삽질의 결과를 말이죠...ㅋㅋ

근데..그것을 한문장으로 정리를 하니..
다음과 같더군요..

소스랄것도 없구요..
아이프레임을 쓰지않은 홈페이지라면
head.php 에 아래의 소스한줄 추가하시면 됩니다.

<script language="JavaScript" type="text/javascript">
if (top == self) self.location.href = "../";
</script>

설명을 하자면...옆구리치고 오는놈은 정문으로 보내버린다..!!ㅋㅋㅋ....@
참고하세요..알고보니 허무하시죠.....^^
아이프레임도 걱정하지마세요..살짝알려드리면
아이프레임에 불려질 파일에 위의 소스를 붙여넣으세요..

간단하죠...아셨으니 허망할겁니다..ㅋㅋ

하지만 제가 엄청난 실험을 통하여 엄선한
거시기만을 취급하시는 거 아시죠??..

그럼 참고 하세용...
답글중에
장바 소스있음..
정상적인 페이지로 만 들어오기
<script language="JavaScript" type="text/javascript">
if (top == self) self.location.href = "../";
</script>
전체 1,026
그누3 팁자료실 내용 검색

회원로그인

(주)에스아이알소프트 / 대표:홍석명 / (06211) 서울특별시 강남구 역삼동 707-34 한신인터밸리24 서관 1402호 / E-Mail: admin@sir.kr
사업자등록번호: 217-81-36347 / 통신판매업신고번호:2014-서울강남-02098호 / 개인정보보호책임자:김민섭(minsup@sir.kr)
© SIRSOFT