2016-04-01 15 views
2

o < dosyaları > veya bu kural aynı alt klasörlerdeki dosyaları adında uygulanmaz böylece <FilesMatch> yoluyla belirli bir dosyaya erişimine izin vermek mümkündür alt klasörü değil izin?Apache Konf - FilesMatch yalnızca geçerli klasörde,

Güncel kurulumu:

  1. Biz bir web kök index.php, alt klasör yönetici bir tane ve diğer çeşitli alt klasörlerde var da vardır:

    <FilesMatch "\.php$"> 
        Deny from all 
    </FilesMatch> 
    
    <Directory /var/www/> 
        <Files index.php> 
         Allow from all 
        </Files> 
    </Direcotry> 
    
    <Directory /var/www/admin/> 
        <Files index.php> 
         Allow from all 
        </Files> 
    </Direcotry> 
    

    en aşağıdaki varsayalım bazı index.php dosyaları.

  2. Hayır * .php açıkça izin değilse, erişilebilir olmalıdır - sadece /index.php bu durumda ve ne olur

/admin/index.php:

erişime izin tüm alt klasörlerdeki web dizini index.php, tüm index.php dosyaları erişilebilir hale gelir.

yargılandı Ne: alt klasörlerde index.php'de erişimi engellemek üzere DirectoryMatch kullanma

.

<FilesMatch ".+\.php$"> 
    Deny from all 
</FilesMatch> 

<Directory /var/www/> 
    <Files index.php> 
     Allow from all 
    </Files> 
</Direcotry> 

<DirectoryMatch "/var/www/(.+)/"> 
    <Files index.php> 
     Deny from all 
    </Files> 
</DirectoryMatch> 

<Directory /var/www/admin/> 
    <Files index.php> 
     Allow from all 
    </Files> 
</Direcotry> 

Şimdi, bütün alt klasörlerdeki tüm index.php Dosyalar erişim izin verilmiyor - ama aynı zamanda hala izin verilmelidir/yönetici/içinde index.php için.

Ayrıca bu da işe yaramadı dosyaları

<FilesMatch ".+\.php$"> 
    Deny from all 
</FilesMatch> 
<Files /var/www/index.php> 
    Allow from all 
</Files> 
<Files /var/www/admin/index.php> 
    Allow from all 
</Files> 

için absolut pathes ile çalıştı. Hiçbir index.php dosyasına erişilemedi - webroot ve admin klasöründekiler erişilebilir değildi.

Böyle bir sorunu çözmek için daha iyi yaklaşımlar olduğuna inanıyorum?

Saygılarımızla

Dominik arkascha için

+0

Kurulumlarınızda bir sorun var: Açılan bir '' etiketini '' etiketi ile kapatamazsınız. Belgelere bir göz atın: http://httpd.apache.org/docs/current/mod/core.html#filesmatch Kesinlikle http sunucu hata kayıt dosyanızda belirtilmelidir. Kurulumunuzda değişiklik yaptığınızda bu dosyayı izlemeniz gerekir. – arkascha

+0

Merhaba arkascha, ipucunuza teşekkür ederim. Maalesef bu hata gerçek yapılandırma dosyasında mevcut değil. Bu hata burada yazarken ortaya çıktı. Doğru açma ve kapama etiketleriyle bile, bu sorun, –

+0

IIRC oluşur, daha sonra bir '' etiketi içine bir '' yönergesini yerleştirebilirsiniz. Ve alt klasörler için bir joker karakter kullanarak başka bir dizin etiketi tanımlayabilirsiniz (böylece ') ve yine orada bir yönergesini inkar eden bir erişim kullanabilirsiniz. Şut çekmeye değer olabilir. – arkascha

cevap

0

sayesinde

DirectoryMatch yöntemi

yanlış bir fikirdi.

Bunun çözümü basittir - arkascha tarafından önerildiği gibi:

<FilesMatch "\.php$"> 
    Deny from all 
</FilesMatch> 

<Directory /var/www/> 
    <Files index.php"> 
     Allow from all 
    </Files> 
</Direcotry> 

<Directory /var/www/*/*"> 
    <Files index.php> 
     Deny from all 
    </Files> 
</Directory> 

<Directory /var/www/admin/> 
    <Files index.php> 
     Allow from all 
    </Files> 
</Direcotry> 

Çok teşekkür ederim.

İlgili konular