[.htaccess] .htaccess 파일에 대한 액세스를 거부하는 방법

다음 .htaccess 파일이 있습니다.

RewriteEngine On
RewriteBase /

# Protect the htaccess file
<Files .htaccess>
Order Allow,Deny
Deny from all
</Files>

# Protect log.txt
<Files ./inscription/log.txt>
Order Allow,Deny
Deny from all
</Files>

# Disable directory browsing
Options All -Indexes

방문자가 다음 파일에 액세스하는 것을 금지하려고합니다.

domain.com/inscription/log.txt

하지만 위의 내용이 작동하지 않습니다. 브라우저에서 원격으로 파일에 계속 액세스 할 수 있습니다.



답변

htaccess 파일 내에서 <Files>지시문 의 범위는 해당 디렉토리에만 적용됩니다 (하위 디렉토리의 htaccess에있는 규칙 / 지시문이 상위 디렉토리를 대체하여 적용될 때 혼동을 피하기 위해).

따라서 다음을 가질 수 있습니다.

<Files "log.txt">
  Order Allow,Deny
  Deny from all
</Files>

Apache 2.4+의 경우 다음을 사용합니다.

<Files "log.txt">
  Require all denied
</Files>

inscription디렉토리 의 htaccess 파일에서 . 또는 mod_rewrite를 사용하여 htaccess 파일과 log.txt에 대한 액세스를 거부하는 두 경우를 모두 처리 할 수 ​​있습니다.

RewriteRule /?\.htaccess$ - [F,L]

RewriteRule ^/?inscription/log\.txt$ - [F,L]


답변

강력한 패턴 매칭 — 이것이 제가 Perishable Press에서 사용하는 방법입니다. 강력한 패턴 일치를 사용하는이 기술은“ .hta ”,“. HTA ”또는 대소 문자를 구분하지 않는 조합이 포함 된 파일에 대한 외부 액세스를 방지 합니다. 설명을 위해이 코드는 다음 요청을 통한 액세스를 차단합니다.

  • .htaccess
  • .HTACCESS
  • .hTaCcEsS
  • testFILE.htaccess
  • filename.HTACCESS
  • FILEROOT.hTaCcEsS

..etc. 등. 분명히이 방법은 사이트의 HTAccess 파일을 보호하는 데 매우 효과적입니다. 또한이 기술에는 강화 ” 모두 만족 “지침 도 포함됩니다 . 이 코드는 도메인의 루트 HTAccess 파일에 있어야합니다.

# STRONG HTACCESS PROTECTION
<Files ~ "^.*\.([Hh][Tt][Aa])">
order allow,deny
deny from all
satisfy all
</Files>


답변

나는 현재 받아 들여지는 대답이 정확하지 않다고 생각합니다. 예를 들어 .htaccess가상 서버 (apache 2.4)의 루트에 다음 파일이 있습니다.

<Files "reminder.php">
require all denied
require host localhost
require ip 127.0.0.1
require ip xxx.yyy.zzz.aaa
</Files>

이렇게하면 reminder.php하위 디렉터리에있는 외부 액세스가 방지 됩니다. .htaccessApache 2.2 서버에 동일한 효과 가있는 유사한 파일이 있습니다.

<Files "reminder.php">
        Order Deny,Allow
        Deny from all
        Allow from localhost
        Allow from 127.0.0.1
     Allow from xxx.yyy.zzz.aaa
</Files>

나는 확실히 모르지만 나는 그것이에 특히 하위 디렉토리를 정의하려는 시도이다 의심 .htaccess파일, <Files ./inscription/log.txt> 그것이 실패의 원인이된다. .htaccess파일을 동일한 디렉토리에 log.txtie 디렉토리에 두는 것이 더 간단하며 inscription거기에서 작동합니다.


답변

.htaccess 파일에 아래 줄을 넣고 원하는대로 파일 이름을 바꿉니다.

RewriteRule ^(test\.php) - [F,L,NC]


답변

<Directory>예를 들어 태그를 사용할 수 있습니다 .

<Directory /inscription>
  <Files log.txt>
    Order allow,deny
    Deny from all
  </Files>
</Directory>

사용하는 ./경우 /사이트의 루트 디렉토리를 확인하므로 사용하지 마십시오 .

더 자세한 예는 http://httpd.apache.org/docs/2.2/sections.html을 참조하십시오 .


답변