.Htaccess'teki belirli bir klasöre erişimi reddedin


131

site/includesURL'yi değiştirerek kullanıcıların klasöre erişimini engellemeye çalışıyorum .

Her şeyi inkar etmem ve izin vermek için tek tek istisnalar yapmam gerekip gerekmediğini, bu klasörü reddedebilir miyim yoksa kullanılabilecek bir yeniden yazma işlevi olup olmadığını bilmiyorum.

Spesifik örnek: localhost/site/includesURL'ye yazarak dizin dosyalarını görmek istemiyorum .


1
sadece dizinlerin listelenmesine izin vermemek Options -Indexesiçin kök klasörde bulunan .htaccess dosyasına yazın

Yanıtlar:


206

site/includes/.htaccessDosya oluşturun ve şu satırı ekleyin:

Deny from all

5
Hey!! anubhava Bunu / api klasöründeki api dosyalarıma doğrudan erişimi devre dışı bırakmak için kullandım, ancak şimdi tüm web hizmeti çağrıları 403 yasak durumunu gönderiyor .. Birisi tarayıcıdan eriştiğinde erişimi engellemek istiyorum.
ravisoni

9
Bir web sunucusu için, tarayıcı ile tarayıcı olmayan arasında istekler arasında gerçek bir fark yoktur.
anubhava

Nginx kullanıyorum ve kullanamıyorum .htaccess. peki, bunu olmadan nasıl yapabilirim .htaccess? teşekkürler
Shafizadeh

Hepsini reddedersem klasör / alt klasör dosyalarına nasıl erişebilirim? Klasör / alt klasördeki dosyalar 404 hatası veriyor.
Vikas Khunteta

2
Deny from all404 vermeyecek ama 403. PHP / Perl vb. kullanarak dosya / klasörlere erişebilirsiniz, ancak bir web isteği kullanamazsınız. Sorgunuza cevap vermediyse yeni bir soru açabilirsiniz.
anubhava

52

Ayrıca bir klasöre erişimi reddedebilirsiniz. RedirectMatch

Htaccess'e aşağıdaki satırı ekleyin

RedirectMatch 403 ^/folder/?$

Bu 403 forbidden, klasör için bir hata döndürür , yani: http://example.com/folder/ancak bu klasör içindeki dosyalara ve klasörlere erişimi engeller, eğer klasör içindeki her şeyi engellemek istiyorsanız, o zaman sadece normal ifade kalıbını olarak değiştirin ^/folder/.*$.

Başka bir seçenek ise mod-rewrite ise url-rewrting-moduleisimli Eğer aşağıdaki gibi bir şey kullanabilirsiniz etkin root/.htaccss:

RewriteEngine on

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

Bu içten bir istek eşler folderiçin forbiddenhata sayfası.


1
RedirectMatch .....: Apache 2,22 ile en iyi çözüm ilki
John

6
.htaccessErişimi reddetmem gereken her dizinde birden çok dosya oluşturmak yerine bu yanıtı tercih ederim .
DanMad

40

Bir .htaccessdosyada kullanmanız gereken

Deny from  all

Bu in koy site/includes/.htaccessiçin belirli yapmak için includesdizine

Sadece dizin dosyalarının bir listesine izin vermemek istiyorsanız kullanabilirsiniz.

Options -Indexes 

2
Bu yinelemeli mi?
Abdillah

@Abdillah Evet öyle
Oliver M Grech

18

Dizini, tüm dosya türleri için erişimi reddederek çok güvenli olacak şekilde ayarlayacağız. .Htaccess dosyasına eklemek istediğiniz kod aşağıdadır.

Order Allow,Deny 
Deny from all 

Şimdi güvenliği ayarladığımız için, şimdi istediğimiz dosya türlerine erişime izin vermek istiyoruz. Bunu yapmak için, eklediğiniz güvenlik kodunun altındaki .htaccess dosyasına aşağıdaki kodu ekleyin.

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

son .htaccessdosyan şöyle görünecek

Order Allow,Deny 
Deny from all 

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

Kaynak korunan bir dizinde belirli dosya türleri erişime izin ver


Bu cevap beni çok fazla baş ağrısından kurtardı. Tıkır tıkır çalışıyor.
Çok deniyorum ama daha çok ağlıyorum

9

Erişimi reddetmiş olması gereken klasör için bir .htaccess dosyası oluşturabilirsiniz.

Deny from  all

veya özel bir 404 sayfasına yönlendirebilirsiniz

Redirect /includes/ 404.html

6

.Htaccess'i kısıtlamak istediğiniz klasöre koyun

## 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>

Kaynak: MantisBT kaynakları.


4

IndexIgnore * Alt dizin dahil tüm web sitesi dizinlerinizin dosya listesini devre dışı bırakmak için bunu kök .htaccess dosyanıza da koyabilirsiniz.


6
Bu, dosya listelemeyi devre dışı bırakmaz, ancak autoindexer'a dizini oluştururken tüm dosyaları yoksaymasını söyler. Dosya listelemeyi devre dışı bırakmak için kullanmalısınız Options -Indexes.
Vladimir Kornea

3

İndex.php, index.html, index.htm oluşturmak güvenli değildir. Çünkü herkes dosya adını tahmin ederek belirtilen dizindeki dosyalarınıza erişebilir. Örneğin: http://yoursite.com/includes/file.dat Yani, önerilen yöntem tüm ziyaretçileri reddetmek için bir .htaccess dosyası oluşturmaktır;). İyi eğlenceler !!


2

Bunu dinamik olarak şu şekilde yapabilirsiniz:

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

0

Anlamadığım bazı nedenlerden dolayı / .htaccess klasörünü oluşturmak ve Tümünden Reddet seçeneğini eklemek benim için işe yaramadı. Nedenini bilmiyorum, basit görünüyordu ama işe yaramadı, bunun yerine htaccess köküne RedirectMatch 403 ^ / klasör /.*$ eklendi.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.