Autorisation IIS vs ASP.NET - le moyen le plus simple de sécuriser des fichiers statiques?

StackOverflow https://stackoverflow.com/questions/1015173

  •  06-07-2019
  •  | 
  •  

Question

Disons que j'ai les éléments suivants dans un fichier Web.config:

<allow roles="Developers" />
<deny users="*"/>

Ceci verrouille l'accès aux fichiers .aspx, .asmx et autres types de fichiers .NET, tout en permettant aux utilisateurs non autorisés d'ouvrir des fichiers statiques tels que image.jpg. Je comprends pourquoi on ne demande pas d’informations d’autorisation à web.config lorsque quelqu'un demande un fichier image.jpg (ce n'est pas un type .NET et IIS peut le contourner), mais comment puis-je verrouiller une application entière?

Les conseils que j'ai trouvés en ligne incluent:

  • créez une entrée <location> pour le répertoire en question et IIS / .NET le récupérera. (Il semble que non.)
  • vous devez écrire votre propre filtre ISAPI et y mapper les extensions de tous les fichiers sensibles.
  • vous n'avez pas besoin d'écrire votre propre filtre ISAPI - il suffit de mapper les extensions sur aspnet_isapi.dll pour le faire.
  • vous n'avez pas du tout besoin de modifier IIS, créez simplement une entrée httpHandler dans le fichier web.config pour vos extensions. (Je préfère ne pas essayer de faire cela pour chaque extension de l'application.)

Cela ne fonctionne pas aussi facilement que je me souviens d’être dans Apache. Quel est le moyen le plus simple de demander un mot de passe à un visiteur et de ne pas servir de fichier (statique ou non) à un utilisateur qui ne l’a pas?

Était-ce utile?

La solution

Activer mappage de caractères génériques pour IIS 6 . Cela enverra tous les fichiers via le pipeline ASP.NET, garantissant l’autorisation du formulaire pour tous les fichiers. Cela dégradera les performances (je ne sais pas combien).

Pour IIS 5, passez à IIS 6.

Vous énumérez 4 idées:

  • emplacement ne fonctionne que si vous avez un mappage générique (ou des extensions spécifiques mappées).

  • Qui veut écrire un filtre isapi? Vous ne pouvez pas le faire facilement dans des langages gérés à moins d’avoir IIS7. Et qui veut écrire un filtre isapi c ++?

  • Le mappage de caractères génériques fonctionne avec l’avertissement ci-dessus (performances)

  • Encore une fois, la dernière option ne fonctionnera pas sans enregistrer ces extensions spécifiques avec IIS et de les acheminer via aspnet.

Autres conseils

Un moyen simple et agréable consiste à effectuer une mise à niveau vers IIS 7, qui dispose désormais d'un pipeline intégré.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top