403 대신 404로 디렉토리 목록 비활성화


9

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

Options -Indexes

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

www.example.com/secret/

나는 수 403 금지 응답을.

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



나는 그것을 알고 있지만, 그것을 어렵게 만드는 데 약간의 노력이 들기 때문에 누구나 쉽게 할 수 있다는 점은 없습니다.
Rik Heywood

답변:


8

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

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


1

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

예를 들어, PHP에서 :

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

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

ErrorDocument 403 /403.php

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


서버를 긁는 사람들에게 여전히 403으로 표시되지 않습니까?
IRGeekSauce

1
아니요. 서버는 header()명령 으로 인해 올바른 404 오류로 응답합니다 .
제랄드 슈나이더

-1, 사용자 정의 오류 메시지는! = 서버 오류 메시지 일 수 있습니다 (닝 또는 아파치 등). 서버를 구성하거나 .htaccess 파일을 사용할 수있는 방법이없는 경우 마지막 방법입니다. 또한이 솔루션으로 웹 사이트를 DirBustering하는 것을 막을 수는 없습니다. 서버 오류 메시지와 같은 "사용자 정의 오류 메시지"를 여전히 구별 할 수 있기 때문입니다.
Awaaaaarghhh

0

디렉토리의 내용을 목록으로 표시하지 않고 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로 작업 할 때는 브라우저에서 캐시를 지우십시오.


당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.