2009-12-10 6 views
0

Je souhaite autoriser une liste dir de certains répertoires, mais je souhaite bloquer les téléchargements.Apache Dir Listing

Fondamentalement, la structure dir est

NZBS -> Alt.binaries.mp3 -> Alt.binaries.tv -> Alt.binaries.multimedia

Les fichiers contenus dans les sous-répertoires sont. fichiers zip.

Je souhaite que les utilisateurs puissent afficher le contenu des sous-répertoires, mais ne permettent aucun téléchargement. J'ai cherché sur le net mais je ne trouve rien de pertinent.

Merci à l'avance pour toute aide.

Répondre

0

Utilisez l'instruction RedirectMatch pour bloquer l'accès à n'importe quel répertoire ou fichier qui correspond à l'expression régulière et l'envoyer à une certaine URL. Il est probablement préférable de les envoyer à l'URL qu'ils parcourent actuellement.

RedirectMatch regex url 
1

Il y a plusieurs façons de le faire

  1. utilisation RedirectMatch mentionné ci-dessus
  2. Utilisez mod_rewrite pour réécrire tous les appels à index.php
  3. Déplacer le dossier racine du document extérieur et afficher le dossier à la suite du travail de script

Les options deuxième et troisième vous obligeront à écrire un script pour lister le contenu du dossier. Il est assez simple de script que vous pouvez trouver dans le documentation of PHP

<?php 
$d = dir("/etc/php5"); 
echo "Handle: " . $d->handle . "\n"; 
echo "Path: " . $d->path . "\n"; 
while (false !== ($entry = $d->read())) { 
    echo $entry."\n"; 
} 
$d->close(); 
?> 

La troisième option nécessite le moins de privilèges sur le serveur Web. Cela fonctionne comme ça:

  1. Votre site Web est dans le dossier du serveur/home/vous/public_html. Vous placez le dossier dans/home/vous/uploads
  2. client voulant voir le contenu Folde entre la page www.yourdomain.com/folder.php?folder=xxx
  3. Vous mapper la valeur "dossier" de la variable PHP (xxx) au nom du dossier
    • Vous devez vous assurer que XX n'est pas comme ../../../etc, cela affichera le contenu du dossier etc. Utilisez la table de mappage (1 => yourfolder1 etc) ou assurez-vous que tout se déroule dans le dossier uploads.
  4. Vous énumèrent les entrées du dossier, éventuellement des liens vers des sous-dossiers (www.yourdomain.com/folder.php?folder=yyy etc)
  5. Vous regardez :)

La troisième option (mod rewrite) est fondamentalement le même, mais le nom du dossier est donné par le module mod rewrite (règle de réécriture pour convertir www.yourdomain.com/uploads/xxx en www.yourdomain.com/folder.php?dossier = xxx)

Résumant:

La première option téléchargement noms de interdit fichiers en les redirigeant vers certains fichiers (comme yourdomain.com/403.php). Il s'appuie sur le serveur Web pour afficher la liste et lui permet de gérer le reste.

La deuxième et la troisième méthode (peuvent être combinées de c) créent leur propre liste de répertoires. Si vous voulez appliquer une mise en page, c'est la seule option. La méthode suggérée est de placer le dossier en dehors de la racine du document, de sorte que les utilisateurs ne pourront pas télécharger de fichiers même si votre script échoue (pour le serveur web, il n'y aura pas de fichiers, car ils sont en dehors de la racine du document). Vous devez vous assurer que l'utilisateur n'est pas autorisé à afficher n'importe quel dossier sur votre serveur (c'est dangereux).