Skip to content

파일 접근 제한

그누보드의 모든 파일이 웹에서 접근이 가능한 상태로 설치하여 사용된다. 그누보드 배포본에 포함된 모든 파일과 설치 및 실행 시 생성되는 모든 파일에도 접근할 수 있으며 이는 보안취약점으로 악용되거나 정보가 유출될 수 있으니 주의해야 한다.

PHP 파일은 물론이고 로그, 임시 데이터, 첨부파일 등 파일을 생성할 때 브라우저에서 접근할 수 있음을 주의해야 한다. 사용자의 데이터가 유출되거나 사용자를 위험에 노출하지 않도록 파일을 다룰 때 주의해야 한다.

Apache 웹서버에서만 일부 보호됨

그누보드는 Apache 환경에서 극히 일부 제한만 적용되어 있으며, Nginx 환경에서는 이 접근제한이 적용되지 않는다. 그누보드 개발사에서도 Nginx 설정에 대한 가이드를 제공하지 않아 알아서 알아서 해결해야 한다.

TIP

저용량 데이터의 임시 보관이 필요하다면 파일 캐시를 활용할 수 있다.

PHP 파일의 접근 제한

PHP 파일도 브라우저에서 직접 접근할 수 있으므로 그누보드에서는 아래와 같이 _GNUBOARD_ 상수의 존재여부로 동작을 중단시켜 악의적인 사용을 방지한다.

php
if (!defined('_GNUBOARD_')) {
    exit;
}

그누보드 폴더 하위의 PHP 코드가 동작하는 파일에는 이처럼 접근을 제한하는 방법을 항상 적용하는 것이 좋다.

_GNUBOARD_ 상수는 /config.php 파일에 정의되어있으며, /common.php 파일에서 include 하므로 그누보드 동작에는 영향을 주지않고 브라우저에서 개별 파일의 직접 접근을 효과적으로 차단할 수 있다.

WARNING

이 방법은 PHP 코드가 실행되는 (일반적으로) .php 확장자를 가진 파일에서만 사용할 수 있는 방법이다. 이외의 파일은 보호할 수 없다.

웹서버에서 접근 제한

그누보드는 Apache 웹서버 환경에서는 일부 파일 및 폴더의 접근을 제한하고 있다.

  • /data 폴더 내의 .php, .pht, .html, .htm, .phtm, .phtml, .inc, .cgi, .pl, .phar 확장자 및 session 폴더

INFO

session 폴더 등 제한 대상은 그누보드 설치 시점에 따라 위 목록과 다를 수 있다.

하지만, 접근을 제한한 대상이 충분하지 못하며 Apache 외 Nginx에서는 이 제한이 적용되지 않으므로 Nginx 웹서버 환경에서는 보호되지 않는다.

WARNING

물론, 이 제한만으로는 충분하지 않다.