php html 파일에서 php 구문 숨기기

2010.05.17 08:17

Elkha 조회 수:6861

참고 문서  

php 노출

html.png 일반적으로 .html 파일을 열면 php 소스가 그대로 노출된다.
보안에 문제가 있다는 뜻은 아니지만, 외부 방문자에게 소스가 노출되는건 썩 내키지 않는다.

웹 서버 설정

Lighttpd

나는 Lighttpd 웹 서버를 사용하기 때문에 /etc/lighttpd/lighttpd.conf 파일을 수정했다.
웹서버의 php 확장기능을 적용할 파일의 확장자를 추가하면 된다.

# static-file.exclude-extensions = ( ".php", ".pl", ".fcgi" )
static-file.exclude-extensions = ( ".php", ".pl", ".fcgi", ".html" )

php.png위와 같이 바꾸고 나서 php 소스가 있는 파일로 액세스를 시도해봤다.
그랬더니 403 에러가  뜨더라 -ㅅ-
에러페이지를 의도한건 아니지만 원래 목적은 달성했으니 그걸로 만족한다.

Apache

내가 구축한 Apache 서버는 어차피 html 파일에서도 php 구문이 적용되길래 별 소용이 없었다.
만약 php 구문이 노출된다면 .htaccess 파일을 수정하면 된다.

AddType application/x-httpd-php .html
AddHandler x-httpd-php .html

http://www.starhost.co.kr/xe/108879

테스트해보니 페이지는 뜨지 않고 html 파일을 저장하겠냐고 나오더라.
하여튼 상상을 뛰어넘는 오묘한 세계다 ㅡ,.ㅡ;
덧: 루트 .htaccess 파일을 수정하는 것 보다, 접근을 원치않는 경로에 .htaccess 파일을 생성해서 작성하는게 적절할 것이다.

장점과 단점

소스를 숨기는 효과뿐만 아니라 어느 html 파일에서나 php 구문을 적용할 수 있다.
글쎄.. 단점이 있는지 모르겠지만 본의 아니게 html 파일에서 쓸데없는 php 호출이 발생할지도?
아무튼 php 구문은 가급적 .php 파일에서 처리하는게 좋다.

기타

당연한 얘기지만 XE 템플릿에서 사용하는 { } 문법은 그대로 노출되더라.
곰곰히 생각해보니 웹서버의 rewrite 모듈을 사용해서 디렉토리를 우회하는 게 더 괜찮은 방법인듯?

번호 제목 날짜 조회 수
81 vmware with centos 7 secret 2019.08.23 0
80 php-fpm tcp to socket secret 2020.01.25 0
79 net::ERR_CONNECTION_REFUSED secret 2021.10.11 0
78 my.cnf secret 2019.04.11 1
77 To download large files with rsync command. 2023.05.04 21
76 The best configuration of php7.4-fpm / 1.5GB 2023.05.04 23
75 The best configuration of php7.4-fpm / 8GB 2023.05.04 23
74 windows hardware encrypt ssd 2024.01.23 206
73 gearman 은 무엇인가? 2023.06.21 270
72 apache2 AllowOverride config 2023.05.23 278
71 php 에서 비동기 처리하는 방법 2023.06.22 288
70 mysqldump from remote db to my local server. 2023.05.04 421
69 yum install php 7.1 [6] 2018.10.10 687
68 mysql 백업 (shell script) file 2018.10.14 697
67 munin 설치 2018.10.13 787
66 yum install mariadb [2] 2018.10.10 1143
65 웹 백업 (쉘 스크립트) file 2018.10.14 1194
64 certbot apache multiple domain 2019.04.10 1416
63 yum install php-apcu 2019.03.12 1542
62 yum install latest redis file 2019.03.27 1682