.htaccess에서 하나의 특정 폴더에 대한 액세스 거부


131

site/includesURL을 조작하여 사용자가 폴더에 액세스하는 것을 거부하려고합니다 .

이 폴더 하나를 거부 할 수 있거나 사용할 수있는 다시 쓰기 기능이 있는지 모든 것을 거부하고 수동으로 개별 예외를 허용 해야하는지 모르겠습니다.

구체적인 예 : localhost/site/includesURL 을 입력하여 디렉토리 파일을보고 싶지 않습니다 .


1
Options -Indexes루트 디렉토리에 있는 .htaccess 파일에 디렉토리를 기록하는 것을 허용하지 않으려면

답변:


206

site/includes/.htaccess파일을 작성 하고 다음 행을 추가하십시오.

Deny from all

5
야!! anubhava 나는 이것을 사용하여 / api 폴더 내의 내 api 파일에 대한 직접 액세스를 비활성화했지만 403 금지 상태를 보내는 모든 웹 서비스 호출 .. 누군가 누군가 브라우저에서 액세스 할 때 액세스를 차단하고 싶습니다.
ravisoni

9
웹 서버의 경우 브라우저와 브라우저 이외의 요청 사이에는 실질적인 차이가 없습니다.
anubhava

나는 nginx를 사용하고 사용할 수 없습니다 .htaccess. 그래서 어떻게하지 않고 어떻게 할 수 .htaccess있습니까? 감사
Shafizadeh

모두 거부하면 폴더 / 하위 폴더의 파일에 어떻게 액세스 할 수 있습니까? 폴더 / 하위 폴더에 파일이 있으면 404 오류가 발생합니다.
Vikas Khunteta

2
Deny from all404 대신 403을 제공하지 않습니다. PHP / Perl 등을 사용하여 웹 요청을 사용하지 않고 파일 / 폴더에 계속 액세스 할 수 있습니다. 질문에 대한 답변이 없으면 새 질문을 열 수 있습니다.
anubhava

52

다음을 사용하여 폴더에 대한 액세스를 거부 할 수도 있습니다 RedirectMatch

htaccess에 다음 줄을 추가하십시오

RedirectMatch 403 ^/folder/?$

이것은 403 forbidden폴더에 대한 오류를 반환 합니다. 즉 : http://example.com/folder/폴더 내의 모든 파일을 차단하려면 폴더 내의 모든 파일과 폴더에 대한 액세스를 차단하지 않습니다 . 폴더 내의 모든 것을 차단하려면 정규식 패턴을로 변경하십시오 ^/folder/.*$.

또 다른 옵션은 활성화 되어 mod-rewrite 있으면 url-rewrting-module다음과 같은 것을 사용할 수 있습니다 root/.htaccss.

RewriteEngine on

RewriteRule ^folder/?$ - [F,L]

내부적으로 folderto to forbiddenpage 요청을 매핑합니다 .


1
Apache 2.22에서 가장 좋은 솔루션은 첫 번째 솔루션입니다. RedirectMatch .....
John

6
.htaccess액세스를 거부 해야하는 모든 디렉토리에 여러 파일을 만드는 것이 아니라이 답변을 선호합니다 .
DanMad

40

에서 .htaccess파일 당신은 사용할 필요가

Deny from  all

이것을 디렉토리에 site/includes/.htaccess맞게 만들기includes

디렉토리 파일 목록을 허용하지 않으려면 사용할 수 있습니다

Options -Indexes 

2
재귀입니까?
Abdillah

@Abdillah 그렇습니다
Oliver M Grech

18

모든 파일 유형에 대한 액세스를 거부하면서 디렉토리를 매우 안전하게 설정합니다. 아래는 .htaccess 파일에 삽입하려는 코드입니다.

Order Allow,Deny 
Deny from all 

이제 보안을 설정 했으므로 원하는 파일 형식에 대한 액세스를 허용하려고합니다. 이렇게하려면 방금 삽입 한 보안 코드 아래의 .htaccess 파일에 아래 코드를 추가하십시오.

<FilesMatch "\.(jpg|gif|png|php)$">
Order Deny,Allow
   Allow from all
</FilesMatch>

최종 .htaccess파일은 다음과 같습니다

Order Allow,Deny 
Deny from all 

<FilesMatch "\.(jpg|gif|png|php)$">
Order Deny,Allow
   Allow from all
</FilesMatch>

보호 된 디렉토리의 특정 파일 유형에 대한 액세스 허용 소스


이 대답은 나에게 많은 두통을 저장했다. 매력처럼 작동합니다.
열심히 노력하지만

9

폴더에 대한 .htaccess 파일을 만들 수 있습니다.

Deny from  all

또는 맞춤 404 페이지로 리디렉션 할 수 있습니다

Redirect /includes/ 404.html

6

.htaccess를 제한하려는 폴더에 넣으십시오.

## no access to this folder

# Apache 2.4
<IfModule mod_authz_core.c>
    Require all denied
</IfModule>

# Apache 2.2
<IfModule !mod_authz_core.c>
    Order Allow,Deny
    Deny from all
</IfModule>

출처 : MantisBT 출처.


4

이것을 IndexIgnore * 루트 .htaccess 파일에 두어 하위 디렉토리를 포함한 모든 웹 사이트 디렉토리의 파일 목록을 비활성화 할 수 있습니다


6
이렇게하면 파일 목록이 비활성화되지 않지만 색인을 생성 할 때 자동 색인 작성기가 모든 파일을 무시하도록 지시합니다. 파일 목록을 비활성화하려면을 사용합니다 Options -Indexes.
Vladimir Kornea

3

index.php, index.html, index.htm을 만드는 것은 안전하지 않습니다. 왜냐하면 누구나 파일 이름을 추측하여 지정된 디렉토리 내의 파일에 액세스 할 수 있기 때문입니다. 예 : http://yoursite.com/includes/file.dat 따라서 모든 방문자를 거부하기 위해 .htaccess 파일을 만드는 것이 좋습니다. 즐기세요 !!


2

이런 식으로 동적으로 수행 할 수 있습니다.

mkdir($dirname);
@touch($dirname . "/.htaccess");
  $f = fopen($dirname . "/.htaccess", "w");
  fwrite($f, "deny from all");
fclose($f);

0

내가 이해하지 못하는 몇 가지 이유로 folder / .htaccess를 만들고 모두에서 거부를 추가하면 작동하지 않았습니다. 이유가 무엇인지 모르겠습니다. 단순히 보이지만 작동하지 않아 루트 htaccess에 RedirectMatch 403 ^ / folder /.*$을 추가했습니다.

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