Bir üniversitede sistem yönetimi ile çalışıyorum ve muhtemelen yaygın olan ancak benim için oldukça şok edici bir şeyle karşılaştım.
Tüm public_html dizinleri ve web alanları, web sunucuları için okuma izinleriyle afs'de saklanır. Kullanıcıların public_html dosyalarında php komut dosyalarına sahip olmalarına izin verildiğinden, bu birbirlerinin dosyalarına php (ve ana web dosyaları!) İçinden erişebilecekleri anlamına gelir.
Bu sadece herhangi bir .htaccess şifre koruması tamamen işe yaramaz hale getirmekle kalmaz, aynı zamanda kullanıcıların mysql veritabanı şifreleri ve benzer hassas bilgileri içeren php kaynak dosyalarını okumasına izin verir. Veya diğer kişilerin web sunucularının yazma erişimine sahip olduğu dizinleri buldukları takdirde (örneğin, kişisel günlükler veya gönderilen form verilerini kaydetmek için) bu hesaplarda dosya depolayabilirler.
Basit bir örnek:
<?
header("Content-type: text/plain");
print file_get_contents("/afs/example.com/home/smith/public_html/.htpasswd");
?>
Bu yaygın bir sorun mu? Ve tipik olarak nasıl çözersiniz?
GÜNCELLEME:
Giriş için teşekkürler. Ne yazık ki, basit bir cevap yok gibi görünüyor. Böyle büyük bir paylaşılan ortamda, kullanıcılara muhtemelen bu kadar seçenek verilmemelidir. Aklıma gelen en iyi yaklaşım, tüm "public_html" dizinleri için ana yapılandırmada "open_basedir" ayarlamak, suphp çalıştırmak ve sadece temiz php (cgi komut dosyası yok, ters komutlarla harici komutları çalıştırma) izin vermektir.
Böyle bir politikayı değiştirmek birçok şeyi kırabilir ve büyük olasılıkla kullanıcıların dirgenlerini kapmasını ve bizi kovalamasını sağlar ... Kurulumu nasıl değiştireceğimize karar verirsek, meslektaşlarımla tartışacağım ve burada güncelleyeceğim.
open_basedirüretim sistemlerini barındıran paylaşılan üzerinde çözüm aşağıda ama kendi vhostu herkesi bölünmüş - Emin değilim o ... tek dizinleri için çalışıyorsa