디렉토리 목록을 비활성화했습니다 ...
Options -Indexes
다음과 같은 디렉토리에 액세스하려고 할 때 :-
www.example.com/secret/
나는 수 403 금지 응답을.
그러나 404 Not Found 응답을 원하므로 해커가 내 디렉토리 구조를 너무 쉽게 추측 할 수 없습니다. 어떻게해야합니까?
디렉토리 목록을 비활성화했습니다 ...
Options -Indexes
다음과 같은 디렉토리에 액세스하려고 할 때 :-
www.example.com/secret/
나는 수 403 금지 응답을.
그러나 404 Not Found 응답을 원하므로 해커가 내 디렉토리 구조를 너무 쉽게 추측 할 수 없습니다. 어떻게해야합니까?
답변:
비슷한 문제에 대한 답을 찾기 위해 인터넷을 살펴 보았습니다. mod_rewrite가 가능한 솔루션이지만 최상의 솔루션은 "RedirectMatch"지시문을 사용하는 것입니다.
대신 404 오류를 리턴하는 사용자 정의 403 스크립트를 작성하십시오.
예를 들어, PHP에서 :
<?php
header("HTTP/1.0 404 Not Found");
die("<h1>404 Not Found</h1>");
?>
이제 403 개의 결과에이 스크립트를 사용하도록 Apache를 구성하십시오.
ErrorDocument 403 /403.php
다시 쓰지 않아도되며 전체 서버에서 즉시 작동합니다.
header()
명령 으로 인해 올바른 404 오류로 응답합니다 .
디렉토리의 내용을 목록으로 표시하지 않고 404 오류를 표시하는 내 솔루션은 간단합니다. 프로젝트의 루트 디렉토리에 .htaccess 파일을 작성하고 보호 할 디렉토리를 작성하십시오.
디렉토리 구조
- your_root_directory
- .htaccess
- 404.html
- index.html
- app
- other files I do not want to show
- models
- other files I do not want to show
.htaccess
RewriteEngine On
RewriteRule ^app/ - [R=404,L]
RewriteRule ^models/ - [R=404,L]
ErrorDocument 404 /your_root_directory/404.html
.htaccess의 두 번째 줄은 앱 디렉토리 및 모든 하위 그룹의 목록 항목에 대한 액세스를 허용하지 않습니다.
.htaccess의 세 번째 줄은 모델 디렉토리 및 모든 하위 그룹의 목록 항목에 대한 액세스를 허용하지 않습니다.
.htaccess 줄의 네 번째는 우리 자신의 404 오류를 설정합니다 (아파치 기본 오류를 표시하지 않으려는 경우).
htaccess로 작업 할 때는 브라우저에서 캐시를 지우십시오.
.htaccess를 사용하여 오류를 마스킹하십시오. 이 안내서를 참조하십시오.