[linux] AllowOverride와 .htaccess
로빈아빠
본문
AllowOverride와 .htaccess
작성일 : 2002.03.01
작성자 : 산이 <san2(at)linuxchannel.net>
문서 URL : http://www.linuxchannel.net/docs/apache-allowoverride.txt
*주)
문맥상 간혹 경어를 생략했습니다. 양해해 주시길 바랍니다.
일반적으로 게시판이나 기타 BBS에 파일을 첨부할 경우, 적지 않게 text/html 형식의 *.html *.htm 파일이 많이 올라오곤 합니다.
보안의 이유로 올라온 text/html 파일을 강제로 .phps나 .txt 로 마임타입을 바꾸는 경우가 많으나 올라온 text/html 파일에 php코드가 안들어간 순수 HTML코드만 있을 경우 일반 사용자가 보기엔 상당히 불합리하다.
그래서 업로드 디렉토리에 한에서 *.html *.htm파일을 php코드가 실행되지 않도록 마임타입을 재조정해야 합니다.
우선
위의 문제를 해결하기 위해서는 아파치 httpd.conf 파일에서 다음과 같은 조건이 우선 해결되어 있어야 한다. 즉, 아파치 server config에서 최소한 사용자 계정 디렉토리나 특정 디렉토리에 access control 파일(이하 '.htaccess')을 사용할 수 있도록 AllowOverride에 최소한 FileInfo 기능을 포함하고 있어야 한다. 이는 .htaccess파일을 이용해서 Addtype지시자를 사용하기 위함이다.
예:
<Diretory /home/*/public_html> AllowOverride FileInfo (또는 All 도 가능) </Diretory>
위와 같은 조건만 만족한다면 사용자 계정에서는 .htaccess 파일을 이용해서 이제는 마음대로 마임타입을 조절할 수 있다.
만약 이와 같은 조건이 만족하지 않는다면 서버관리자에게 문의해 보세요.
아마 대부분 웹호스팅 업체라면 위와 같은 기능을 포함해서 좀더 많은 기능을 .htaccess파일에 사용할 수 있도록 해 놓았을 것이니 크게 문제가 되지 않는다.
파일 업로드 디렉토리로 이동한 다음 .htaccess 파일을 만들고 다음과 같이 text/html 마임타입을 재조정합니다.
--- /path/to/file_upload_dir/.htaccess-----------------
AddType text/html .html .htm
꼭 파일 업로드 디렉토리에 적용되는 경우가 아니고 전체나 다른 특정 디렉토리에 적용할 수 있습니다.
만약 .htaccess 파일의 문법이 틀리면 500 에러를 내므로 주의하기 바랍니다.
이렇게 설정하면 올라온 파일(*.html)에 비록 php 코드가 들어가 있더라도 php코드는 해석하지 않고 웹브라우저로 넘겨주기 때문에 원하는 설정이 되는 셈이다.
만약, 자신의 홈페이지가 확실하게 *.html *.htm은 오직 HTML 코드만 사용할 수 있도록 양분되어 있다면 다음과 같이 DocumentRoot에서 설정 할 수 있습니다.
--DocumentRoot/.htaccess ----------------------------------
AddType application/x-httpd-php .php .php3 .ph .lib .inc .conf AddType application/x-httpd-php-source .phps AddType text/html .html .htm
그리고
*.ph *.inc *.lib 등등의 설정 파일에 대해서 직접 URL 호출을 금지시키려면 다음과 같이 설정합니다.
--DocumentRoot/.htaccess ----------------------------------
<FilesMatch "\.(ph|inc|lib)"> Order allow, deny Deny from all </FilesMatch> AddType application/x-httpd-php .php .php3 .ph .lib .inc .conf AddType application/x-httpd-php-source .phps
아래는 실제가 필자가 사용하는 설정 내용이니 참고하기 바랍니다.
--DocumentRoot/.htaccess ---------------------------------
Options FllowSymLinks MultiViews <FilesMatch "\.(ph|inc|lib)"> Order allow, deny Deny from all </FilesMatch> AddType application/x-httpd-php .php .php3 .ph .lib .inc .conf AddType application/x-httpd-php-source .phps AddType text/html .html .htm php_value auto_prepend_file /home/xxx/xxx/header.php php_value auto_append_file /home/xxx/xxx/footer.php
참고로)
AllowOverride FileInfo 기능은 해당 디렉토리에 대한 문서 타입을 컨트롤 하는 기능으로 다음과 같은 지시자를 사용가능합니다.
Addtype, DefaultType, ErrorDocument, 기타
작성일 : 2002.03.01
작성자 : 산이 <san2(at)linuxchannel.net>
문서 URL : http://www.linuxchannel.net/docs/apache-allowoverride.txt
*주)
문맥상 간혹 경어를 생략했습니다. 양해해 주시길 바랍니다.
일반적으로 게시판이나 기타 BBS에 파일을 첨부할 경우, 적지 않게 text/html 형식의 *.html *.htm 파일이 많이 올라오곤 합니다.
보안의 이유로 올라온 text/html 파일을 강제로 .phps나 .txt 로 마임타입을 바꾸는 경우가 많으나 올라온 text/html 파일에 php코드가 안들어간 순수 HTML코드만 있을 경우 일반 사용자가 보기엔 상당히 불합리하다.
그래서 업로드 디렉토리에 한에서 *.html *.htm파일을 php코드가 실행되지 않도록 마임타입을 재조정해야 합니다.
우선
위의 문제를 해결하기 위해서는 아파치 httpd.conf 파일에서 다음과 같은 조건이 우선 해결되어 있어야 한다. 즉, 아파치 server config에서 최소한 사용자 계정 디렉토리나 특정 디렉토리에 access control 파일(이하 '.htaccess')을 사용할 수 있도록 AllowOverride에 최소한 FileInfo 기능을 포함하고 있어야 한다. 이는 .htaccess파일을 이용해서 Addtype지시자를 사용하기 위함이다.
예:
<Diretory /home/*/public_html> AllowOverride FileInfo (또는 All 도 가능) </Diretory>
위와 같은 조건만 만족한다면 사용자 계정에서는 .htaccess 파일을 이용해서 이제는 마음대로 마임타입을 조절할 수 있다.
만약 이와 같은 조건이 만족하지 않는다면 서버관리자에게 문의해 보세요.
아마 대부분 웹호스팅 업체라면 위와 같은 기능을 포함해서 좀더 많은 기능을 .htaccess파일에 사용할 수 있도록 해 놓았을 것이니 크게 문제가 되지 않는다.
파일 업로드 디렉토리로 이동한 다음 .htaccess 파일을 만들고 다음과 같이 text/html 마임타입을 재조정합니다.
--- /path/to/file_upload_dir/.htaccess-----------------
AddType text/html .html .htm
꼭 파일 업로드 디렉토리에 적용되는 경우가 아니고 전체나 다른 특정 디렉토리에 적용할 수 있습니다.
만약 .htaccess 파일의 문법이 틀리면 500 에러를 내므로 주의하기 바랍니다.
이렇게 설정하면 올라온 파일(*.html)에 비록 php 코드가 들어가 있더라도 php코드는 해석하지 않고 웹브라우저로 넘겨주기 때문에 원하는 설정이 되는 셈이다.
만약, 자신의 홈페이지가 확실하게 *.html *.htm은 오직 HTML 코드만 사용할 수 있도록 양분되어 있다면 다음과 같이 DocumentRoot에서 설정 할 수 있습니다.
--DocumentRoot/.htaccess ----------------------------------
AddType application/x-httpd-php .php .php3 .ph .lib .inc .conf AddType application/x-httpd-php-source .phps AddType text/html .html .htm
그리고
*.ph *.inc *.lib 등등의 설정 파일에 대해서 직접 URL 호출을 금지시키려면 다음과 같이 설정합니다.
--DocumentRoot/.htaccess ----------------------------------
<FilesMatch "\.(ph|inc|lib)"> Order allow, deny Deny from all </FilesMatch> AddType application/x-httpd-php .php .php3 .ph .lib .inc .conf AddType application/x-httpd-php-source .phps
아래는 실제가 필자가 사용하는 설정 내용이니 참고하기 바랍니다.
--DocumentRoot/.htaccess ---------------------------------
Options FllowSymLinks MultiViews <FilesMatch "\.(ph|inc|lib)"> Order allow, deny Deny from all </FilesMatch> AddType application/x-httpd-php .php .php3 .ph .lib .inc .conf AddType application/x-httpd-php-source .phps AddType text/html .html .htm php_value auto_prepend_file /home/xxx/xxx/header.php php_value auto_append_file /home/xxx/xxx/footer.php
참고로)
AllowOverride FileInfo 기능은 해당 디렉토리에 대한 문서 타입을 컨트롤 하는 기능으로 다음과 같은 지시자를 사용가능합니다.
Addtype, DefaultType, ErrorDocument, 기타
관련링크
댓글목록
등록된 댓글이 없습니다.