web-dev-qa-db-fra.com

Comment désactiver Directory Browse dans Web.Config

J'ai un site Web et je voudrais comme Deny Directory Browser à partir d'un fichier web.config.

Voici le code que j'utilise placé dans le ROOT. Ne fonctionne pas. Je le teste localement, donc avec l'URL LIKE http: // localhost: 3214/ je peux toujours parcourir le répertoire du système de gestion de contenu.

  • Qu'est-ce que je fais mal?
  • Cela devrait-il fonctionner même sur une machine locale?

Merci pour votre aide!

<configuration>
  <location path="Cms">
    <system.webServer>
      <directoryBrowse enabled="false" />
    </system.webServer>
  </location>
</configuration>

Quelques ressources:

http://blogs.iis.net/bills/archive/2008/03/24/how-to-enable-directory-browsing-with-iis7-web-config.aspx

http://www.expta.com/2008/03/configuring-virtual-directories-with.html

19
GibboK

Premièrement: tout ne fonctionne pas dans un bloc <location>.

Je ne trouve pas d'affirmation positive que <system.webServer> ne soit pas pris en charge dans un <location>, mais je ne trouve aucun cas où il est suggéré de l'autoriser. La preuve en est dans le machine.config (global) où la section system.webserver est définie pour utiliser le gestionnaire IgnoreSection: ie. il n'est pas traité par l'implémentation standard System.Configuration, et c'est cette implémentation standard de la gestion de la configuration qui prend en charge <location>.

Essayez d'ajouter un web.config dans le dossier Cms avec l'élément directoryBrowse pour confirmer que la navigation est bloquée.

7
Richard

Gibbok, rien n'est faux ici, pas de panique :)

En supposant que vous naviguez sur votre site Web à partir du serveur intégré à l'intérieur de Visual Studio, il s'agit généralement d'un cas normal.

Je suis presque sûr que si vous passez à IIS avec le code ci-dessus, la navigation dans les répertoires se comportera exactement comme vous le souhaitez.

Essayez et hébergez ce site dans IIS, et laissez-nous savoir ce qui s'est passé, Merci.

4
Mohammed Swillam

J'essayais le même code. Ce que vous avez est en fait correct. Voici la référence référence .

Bien sûr, cela ne fonctionnait pas pour moi et je ne pouvais pas comprendre pourquoi, jusqu'à ce que je lise le post de Richard et que je me souvienne que quelqu'un a mis un fichier web.config dans ce répertoire. Ce fichier annule le comportement du fichier web.config principal. Dans le sous-répertoire web.config, l'option directoryBrowse était explicitement activée (ainsi que BEAUCOUP d'autres gestionnaires, beurk!). Supprimez ce fichier et ce que vous avez ci-dessus fonctionne pour moi. En fait, il transmet la demande au prochain gestionnaire, ce qui est exactement ce que je voulais.

J'utilise IIS 7 sur mon ordinateur local.

0

la directive <directoryBrowse> contrôle la liste du répertoire via le protocole http uniquement: http://msdn.Microsoft.com/en-us/library/ms691327%28v=vs.90%29. aspx

Cela n'aura aucun effet sur le code, en essayant d'accéder au répertoire depuis n'importe quelle autre application (ou même la vôtre). 

@Edit: après la modification et si je vous ai bien compris - je pense, ce que vous entendez par Refuser l'explorateur d'annuaires est la fonctionnalité souhaitée: affichez le contenu du répertoire dans un chemin spécifié à l'aide du navigateur. Et oui, cela ne fonctionnera probablement pas sur le serveur de développement local. Essayez sur IIs!

0
user492238