403 대신 404로 디렉토리 목록 비활성화 할 때 :- www.example.com/secret/ 나는 수

디렉토리 목록을 비활성화했습니다 …

Options -Indexes

다음과 같은 디렉토리에 액세스하려고 할 때 :-

www.example.com/secret/

나는 수 403 금지 응답을.

그러나 404 Not Found 응답을 원하므로 해커가 내 디렉토리 구조를 너무 쉽게 추측 할 수 없습니다. 어떻게해야합니까?



답변

/ secret에서 mod_rewrite 및 AllowOverride를 활성화하십시오. 그런 다음 .htaccess를 작성하십시오.

RewriteEngine On
RewriteBase   /secret
RewriteRule   ^$ - [R=404,L]


답변

비슷한 문제에 대한 답을 찾기 위해 인터넷을 살펴 보았습니다. mod_rewrite가 가능한 솔루션이지만 최상의 솔루션은 “RedirectMatch”지시문을 사용하는 것입니다.

참조 에 StackOverflow가 : 문제는 리디렉션 (403) (404)에 금지를 찾을 수 없음


답변

대신 404 오류를 리턴하는 사용자 정의 403 스크립트를 작성하십시오.

예를 들어, PHP에서 :

<?php
header("HTTP/1.0 404 Not Found");
die("<h1>404 Not Found</h1>");
?>

이제 403 개의 결과에이 스크립트를 사용하도록 Apache를 구성하십시오.

ErrorDocument 403 /403.php

다시 쓰지 않아도되며 전체 서버에서 즉시 작동합니다.


답변

디렉토리의 내용을 목록으로 표시하지 않고 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를 사용하여 오류를 마스킹하십시오. 이 안내서를 참조하십시오.

http://www.tarahost.net/pages/web-design/29371.php


답변