Yapabileceğiniz tek şey, sunucunun webroot dışında bir dizine tüm "gizli" dosyaları tutmak. Bu dosyalar için tüm erişim sonra dizini içine tek bir PHP-komut dosyası aracılığıyla yönlendirilebilir. Böyle bir şey:
http://www.example.com/protected-directory/access.php?file=/foo/document.doc
Bu gibi bir dizin yapısı ile:
+--+ /server_root
|
+--+ /web_root
| |
| +--+ /protected-directory
| +-- access.php
| +-- access-denied.html
|
+--+ /protected_root
|
+--+ /foo
+-- document.doc
Senin içinde access.php
Eğer böyle bir şey yapardı:
$file = $_REQUEST['file'];
if ($user->hasAccessTo($file)) {
readfile("/server_root/protected_root/$file");
} else {
readfile('access-denied.html');
}
Şimdi, size file
parametresi ile kimsenin vidalar yapmak ve "../../../etc/passwd"
gibi bir şey boyunca geçerken dikkatli olmak zorunda. Ayrıca, muhtemelen yukarıdaki örnekte doğru başlıklarını göndermek emin olmak istiyorum, ben netlik nedenlerle bu atlanmış.