.htaccess를 사용하여 디렉토리 (모든 하위 디렉토리 포함)에서 PHP를 비활성화합니다.
PHP.htaccess를 사용하여 디렉토리 (모든 하위 디렉토리 포함)에서 PHP를 비활성화합니다.
사람들이 파일, HTML 페이지 등을 업로드 할 수있는 웹 사이트를 만들고 있습니다 ... 지금 문제가 있습니다. 다음과 같은 디렉토리 구조가 있습니다.
-/USERS
-/DEMO1
-/DEMO2
-/DEMO3
-/etc... (every user has his own direcory here)
-index.php
-control_panel.php
-.htaccess
이제 PHP를 비활성화하고 싶지만 / USERS 내부의 디렉토리와 하위 디렉토리에 서버 측 포함을 활성화하십시오.
이 작업을 수행 할 수 있습니까 (및 방법 :))? 미리 감사드립니다.
BTW, 나는 WAMP 서버를 사용한다.
해결법
-
==============================
1..htaccess 파일에서 엔진 옵션을 비활성화하십시오.
.htaccess 파일에서 엔진 옵션을 비활성화하십시오.
php_flag engine off
-
==============================
2.하위 디렉토리 (가장 안전한)에 대한 모든 액세스를 비활성화하려면 다음을 사용하십시오.
하위 디렉토리 (가장 안전한)에 대한 모든 액세스를 비활성화하려면 다음을 사용하십시오.
<Directory full-path-to/USERS> Order Deny,Allow Deny from All </Directory>
PHP 파일 만 직접 처리하는 것을 차단하려면 다음을 수행하십시오.
1 - 서버가 PHP로 인식하는 파일 확장명을 알고 있는지 확인하십시오. htaccess에서 사용자가 재정의하도록 허용하지 마십시오. 내 서버 중 하나가 다음으로 설정되었습니다.
# Example of existing recognized extenstions: AddType application/x-httpd-php .php .phtml .php3
2 - Extensions를 FilesMatch (또는 LocationMatch)에 추가하면,
<Directory full-path-to/USERS> <FilesMatch "(?i)\.(php|php3?|phtml)$"> Order Deny,Allow Deny from All </FilesMatch> </Directory>
또는 위치를 사용하여 PHP 파일과 일치시킵니다 (위의 파일 접근 방식을 선호합니다)
<LocationMatch "/USERS/.*(?i)\.(php3?|phtml)$"> Order Deny,Allow Deny from All </LocationMatch>
-
==============================
3.mod_php를 사용한다면, (USERS 디렉토리의 .htaccess 파일이나 / USERS 파일이나 httpd.conf 파일에)
mod_php를 사용한다면, (USERS 디렉토리의 .htaccess 파일이나 / USERS 파일이나 httpd.conf 파일에)
RemoveHandler .php
또는
RemoveType .php
(PHP가 AddHandler 또는 AddType을 사용하여 활성화되었는지 여부에 따라 다름)
다른 디렉토리에서 실행되는 PHP 파일은 / USERS에 파일을 포함 할 수 있습니다 (open_basedir 제한이 없다고 가정). 이는 Apache를 통과하지 않기 때문입니다. 아파치를 사용하여 PHP 파일에 접근하면 일반 텍스트로 serverd됩니다.
편집하다
파일에 대한 액세스를 거부하는 Lance Rushing의 해결책은 아마 더 좋습니다.
-
==============================
4.
<Directory /your/directorypath/> php_admin_value engine Off </Directory>
-
==============================
5.그러면 소스 코드가 실행되는 대신 표시됩니다.
그러면 소스 코드가 실행되는 대신 표시됩니다.
<VirtualHost *> ServerName sourcecode.testserver.me DocumentRoot /var/www/example AddType text/plain php </VirtualHost>
다른 동료가 로컬 네트워크의 소스 코드에 대한 읽기 권한을 가질 수 있도록 한 번 사용했습니다 (빠르고 간단하고 대체적인 방법).
경고!
Dan이 언젠가 전에 지적했듯이,이 방법은 프로덕션에서 사용되어서는 안됩니다. php 파일을 실행하거나 표시하려는 시도를 차단하므로 허용 된 답변을 따르십시오.
사용자가 php 파일을 공유하고 (다른 사용자가 소스 코드를 표시하게하려면) git, wiki 등의 더 나은 방법이 있습니다.
이 방법은 피해야합니다! (경고를 받았다. 교육 목적으로 여기에 놓아 둠)
-
==============================
6.이것은 지나친 것일 수 있습니다. 그러나 PHP 파일의 확장자에 의존하는 모든 작업은 .php가됩니다. 나중에 누군가가 따라오고 .php4 또는 .html에 대한 처리기를 추가하면 PHP에서 처리하게됩니다. 정적 인 내용 만 제공하는 Apache 또는 다른 인스턴스의 디렉토리에서 파일을 제공하지 않는 것이 좋습니다.
이것은 지나친 것일 수 있습니다. 그러나 PHP 파일의 확장자에 의존하는 모든 작업은 .php가됩니다. 나중에 누군가가 따라오고 .php4 또는 .html에 대한 처리기를 추가하면 PHP에서 처리하게됩니다. 정적 인 내용 만 제공하는 Apache 또는 다른 인스턴스의 디렉토리에서 파일을 제공하지 않는 것이 좋습니다.
-
==============================
7.그 답 중 아무 것도 나를 위해 일하고 있지 않습니다 (500 오류를 생성하거나 아무 것도하지 않음). 아파치 설정에 액세스 할 수없는 호스트 서버에서 작업하고 있기 때문일 수 있습니다.
그 답 중 아무 것도 나를 위해 일하고 있지 않습니다 (500 오류를 생성하거나 아무 것도하지 않음). 아파치 설정에 액세스 할 수없는 호스트 서버에서 작업하고 있기 때문일 수 있습니다.
그러나 이것은 나를 위해 일했다 :
RewriteRule ^. * \. php $ - [F, L]
이 줄은 .php로 끝나고이 하위 디렉토리에서 끝나는 URL에 대해 403 Forbidden 오류를 생성합니다.
@Oussama는 저에게 옳은 방향으로 인도합니다. 덕분입니다.
-
==============================
8.이 시도:
이 시도:
<FilesMatch "\.((php[0-9]?)|p?html?|pl|sh|java|cpp|c|h|js|rc)$"> SetHandler None </FilesMatch>
from https://stackoverflow.com/questions/1271899/disable-php-in-directory-including-all-sub-directories-with-htaccess by cc-by-sa and MIT license
'PHP' 카테고리의 다른 글
전자 메일 용 PHP에서 HTML을 일반 텍스트로 변환 (0) | 2018.09.19 |
---|---|
배열 목록에서 배열 트리 만들기 (0) | 2018.09.19 |
cURL을 사용하여 HTTPS 사이트에 연결할 수 없습니다. 0 길이의 콘텐츠를 대신 반환합니다. 내가 무엇을 할 수 있을지? (0) | 2018.09.19 |
URL에서 'public / index.php'를 어떻게 제거 할 수 있습니까? (0) | 2018.09.19 |
참조에 의한 PHP Foreach Pass : 마지막 요소 복제? (곤충?) (0) | 2018.09.19 |