Bloquer l'accès au sous-répertoire à l'aide de Web.config

8

J'ai un sous-répertoire dans mon projet ASP.NET qui contient des fichiers utilitaires. Ils sont nécessaires au code au moment de l'exécution, mais je ne veux pas qu'ils soient visibles sur le Web.

Quelle est la syntaxe dans un fichier Web.config pour bloquer l'accès à tous les utilisateurs à un seul sous-répertoire et à tout son contenu?

Joel Spolsky
la source

Réponses:

15

IIS 7 dispose d'une nouvelle fonctionnalité de "filtrage des demandes". Vous souhaitez probablement utiliser la configuration des segments cachés:

<configuration>
 <system.webServer>
  <security>
   <requestFiltering>
    <hiddenSegments>
     <add segment="BIN"/>
    </hiddenSegments>
   </requestFiltering>
  </security>
 </system.webServer>
</configuration>

Cela fait que http: // yoursite / bin n'est pas utilisable (mais http: // yoursite / binary fonctionne toujours)

Consultez: http://learn.iis.net/page.aspx/143/how-to-use-request-filtering

MattB
la source
2
Mais cela bloquera également yoursite / bla / bin / test .... :-(
Carsten Schütte
Pas une réponse à la question mais également utile pour le sujet traité. Vous pouvez également utiliser HttpHandlers pour bloquer les extensions de fichier spécifiques que vous souhaitez également. C'est aussi une bonne pratique de le faire, par exemple bloquer tous les fichiers source / base de données, etc.
roule
1

Votre problème est que si IIS renvoie simplement les fichiers, ASP.Net n'aura jamais la chance d'interférer. Je crois que cela peut être fait en activant l'authentification basée sur les formulaires et en jouant énormément, mais je déplacerais simplement les fichiers en dehors du dossier wwwroot.

JR

John Rennie
la source
0

Cela devrait fonctionner:

<configuration>
  <location path="FolderName">
    <system.web>
      <authorization>
        <deny users="*"/>
      </authorization>
    </system.web>
  </location>
</configuration>
John Rasch
la source
2
Cela ne fonctionne pas car les fichiers sont des fichiers .txt ... Je pense que John Rennie a raison de dire qu'ASP.NET n'a pas la possibilité d'interférer avec les fichiers .txt.
Joel Spolsky
C'est bon à savoir, j'ai toujours gardé exclusivement les fichiers servis via les gestionnaires d'ASP.NET dans mes répertoires accessibles via le Web, donc je n'ai jamais rencontré ce problème
John Rasch