안녕하세요. 린치핀소프트 한광희입니다.

이번 포스트는 .htaccess 파일을 이용하여 임의의 이용자가 URL을 통해 디렉토리 내의 파일에 접근한것을 막는 방법을 소개합니다. 워드프레스에서 관리하는 콘텐츠나 자료가 외부로 유출되지 않아야 되며 브라우저로 접근하지 못하도록 차단하는데 도움이 될 수 있는 방법입니다. 단, 이 방법은 해당 디렉토리 내의 모든 자원에 대해서 접근을 차단하므로 웹 페이지에서 이미지나 링크로 해당 디렉토리의 자원(콘텐츠)를 링크하거나 연결하면 안됩니다.

.htaccess 란?

.htaccess is a configuration file for use on web servers running the Apache Web Server software. When a .htaccess file is placed in a directory which is in turn ‘loaded via the Apache Web Server’, then the .htaccess file is detected and executed by the Apache Web Server software. These .htaccess files can be used to alter the configuration of the Apache Web Server software to enable/disable additional functionality and features that the Apache Web Server software has to offer. These facilities include basic redirect functionality, for instance if a 404 file not found error occurs, or for more advanced functions such as content password protection or image hot link prevention.

 http://www.htaccess-guide.com/ 출처

.htaccess 란 웹 서버 소프트웨어인 아파치(Apache)에서 정의하는 환경 설정 파일입니다. 특징으로는 웹 서버의 루트 디렉토리이하의 디렉토리에서 이 “.htaccess”파일을 생성하여 디렉토리 내부에서 참조해야하는 설정을 구성할 수 있습니다. 즉, 웹 루트 디렉토리 하위의 디렉토리별로 서로 다른 환경설정을 구축하고자 할때 각 설정이 다른 .htaccess 파일을 생성하여 디렉토리에 추가하면 됩니다.

(디렉토리내의 .htaccess 파일을 따라 웹 서버가 해당 설정을 적용할지는 웹 서버(아파치)의 기본 환경설정에 따라 다릅니다. Ubuntu 기준 아파치의 환경설정 파일인 apache2.conf 의 “AllowOverride”설정이 “None”이라면 디렉토리 내의 .htaccess 가 무시됩니다. 반대로 디렉토리 내의 .htaccess를 적용하려면 “AllowOverride” 설정을 “All”로 바꿔줍니다.)

 

그러면 .htaccess 를 이용하여 디렉토리의 접근을 제한하는 방법을 소개합니다.

 

 

1..htaccess 파일이 없는 현재 디렉토리 상황

screenshot-52.68.215.28 2016-02-29 21-05-42

위의 스크린샷처럼 site2/wp-content/uploads/linchpin/ 디렉토리 경로의 linchpin_img.jpg는 브라우저를 통해 제한없이 이미지를 확인하고 다운로드 받을 수 있습니다.

이런 상황에서 site2/wp-content/uploads/linchpin 디렉토리에 .htaccess 파일을 추가하여 현재 디렉토리의 접근을 제한해보겠습니다.

 

2. .htaccess 파일의 생성

screenshot-newtab 2016-02-29 21-07-53

위 화면은 FTP를 이용하여 upload/linchpin 디렉토리의 파일을 확인하고 있는 모습입니다. 이처럼 디렉토리내에 .htaccess 파일을 생성합니다.

 

screenshot-bpconcjcammlapcogcnnelfmaeghhagj 2016-02-29 21-09-54

리눅의 VIM 편집기나 윈도우의 텍스트 편집기로 “.htaccess”파일을 생성하여 편집합니다. 위와 같은 내용을 추가합니다.

Order Deny,Allow
Deny from all

<Files /index.php>
Order Allow,Deny
Allow from all
</Files>

이 설정은 디렉토리내의 모든 자원에 대한 접근을 거부하지만 “index.php”라는 파일에 한해서만 접근을 허용한다는 설정입니다.

즉 wp-content/uploads/linchpin/index.php 외의 접근은 모두 거부당하며 index.php 로 접근하면 해당 페이지를 보여줍니다.(redirect나 안내문구를 넣어주면 명백하게 잘못된 접근이나 제한된 접근인 것을 이용자에게 인지시켜줄 수 있습니다)

 

3. 설정 후 .htaccess테스트

screenshot-newtab 2016-02-29 21-32-55

설정 후 다시 같은 URL로 접근하면 위처럼 forbidden 안내 페이지가 나타나면 이전과 다르게 이미지를 확인하거나 다운로드 할 수 없습니다.