47 votes

Comment sécuriser Elmah.axd?

Nous utilisons Elmah que notre journalisation des erreurs de système pour une application qui sera mise en production bientôt. Il est extrêmement utile, mais si elle va dans la production comme cela, n'importe qui dans le monde d'accéder au journal des erreurs parce que tout ce qu'ils ont à faire est de visiter ourdomain.com/elmah.axd.

Ce n'est évidemment pas idéal. Au départ, j'avais prévu de limiter l'accès à cette page uniquement pour les adresses IP au sein de notre entreprise, mais maintenant de nos administrateurs système sont en train de dire que c'est pas possible. Donc je pose la question ici comment puis-je empêcher l'accès à cette ressource?

Nous avons l'exécution d'une ASP.NET MVC application sur IIS 6.

43voto

Darin Dimitrov Points 528142

Le scénario typique pour la sécurisation des elmah.axd est ne permettant que certains utilisateur authentifié pour pouvoir y accéder. Mais si votre site n'utilise pas l'authentification à tout cela pourrait ne pas être applicable.

Voici ce que je vous recommande:

  1. Désactiver complètement l' elmah.axd gestionnaire sur votre site principal
  2. Configurer elmah écrire les logs de certains de source de données partagée (comme un fichier partagé, sur la base de données SQLite ou encore SQL Server)
  3. Configurer un deuxième site dans IIS, probablement sur un autre réseau ou d'un serveur qui ne dispose que de elmah installé et qui pointe vers cette même source de données partagée. Maintenant, vous devez toujours utiliser le second site, à lire les journaux. Évidemment, le deuxième site ne serait accessible qu'à vous.

Si vous décidez d'utiliser SQL Server vous pouvez même lire les journaux de plusieurs applications en cours d'exécution sur plusieurs serveurs web dans une ferme au sein d'une même application interne, accessible uniquement pour vous.

21voto

alexanderb Points 6553

J'ai trouvé que ceci est le plus acceptable pour les applications MVC:

http://www.beletsky.net/2011/03/integrating-elmah-to-aspnet-mvc-in.html

16voto

m0sa Points 5501

Vous pouvez pointer le gestionnaire http elmah vers une autre URL (par exemple, "Secure / elmah.axd") dans web.config. Vous pouvez sécuriser l'URL comme n'importe quelle autre page asp.net dans la configuration Web.

 <httpHandlers>
  ...
  <add verb="POST,GET,HEAD" path="/Secure/elmah.axd" type="Elmah.ErrorLogPageFactory, Elmah" />
</httpHandlers>
<location path="Secure" > <!-- secure the host.com/Secure path -->
  <system.web>
    <authorization>
      <deny users="?" />
      <!-- Or anything else... -->
    </authorization>
  </system.web>
</location>
 

Nous utilisons avec succès cette approche sur IIS7 en utilisant des fournisseurs d’appartenance à Active Directory, et cela fonctionne très bien. Je ne sais pas si cela fonctionne sur IIS6 cependant.

9voto

Jakob Gade Points 6006

Si vous utilisez un abonnement ASP.NET, il est assez facile de limiter l'accès à HttpHandler elmah.axd aux utilisateurs anonymes et d'autoriser uniquement les utilisateurs connectés dans un groupe "Administrateurs". Je l'ai fait comme ça:

 <configuration>
  ...
  <location path="elmah.axd">
    <system.web>
      <authorization>
        <allow roles="Administrators"/>
        <deny users="*"/>
      </authorization>
    </system.web>
  </location>
</configuration>
 

Toute personne connectée ET membre du rôle "Administrateurs" peut accéder à la page maintenant.

3voto

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X