Laurent Duveau
Attention au mode debug="true" en production !
D'où l'importance de placer debug="false" du web.config avant de déployer une application ASP.NET
Par Laurent Duveau publié le 20/10/2006 à 19:55, lu 16263 fois,
Vous connaissez tous l'utilité de l'élément <compilation debug="true" /> du web.config et la nécessité de le passer à false à l'issue du déploiement de vos applications ASP.NET. Pourtant, on peut facilement l'oublier ou pire, ne pas s'en soucier. Et bien voici pourquoi vous n'oublierez plus de placer debug à false pour une application en production; le simple fait de laisser debug="true" entraine les effets suivants :
  • Perte de performance : le code ne peut plus vraiment être optimisé à la compilation car il faut pouvoir l'exécuter ligne à ligne (debugage)
  • Timeout : Afin de faciliter le debugage les requêtes ASP.NET ne font plus de timeout, alors que l'on veut bien sûr éviter ce comportement en production !
  • L'application utilise beaucoup plus de mémoire
  • Les pages se compilent moins vite au runtime car on ne profite pas du système de compilation batch
  • Enfin les ressources embarquées servies par le handler WebResources.axd ne sont pas mises en cache dans le navigateur ; sont concernées les images, css et librairies JavaScript utilisées par la plupart des contrôles ASP.NET 2.0 (TreeView, Menu, Validateurs) mais aussi les composants tiers et les contrôles ASP.NET AJAX. Ceci afin de ne pas avoir à vider sans cesse le cache du navigateur pendant le développement.
L'astuce proposée ici est très simple à mettre en place, signalée par Scott Guthrie, il s'agit d'activer le switch suivant dans le machine.config du serveur de production pour s'assurer que toutes les applications ASP.NET 2.0 du serveur s'exécutent en mode release, quelque soit la valeur de leur élément debug.

<configuration>

  <system.web>

    <deployment retail="true" />

  </system.web>

</configuration>

Ceci aura pour effet de :
  • Désactiver la commande debug="true"
  • Désactiver l'affichage des traces dans les pages
  • Désactiver l'affichage des messages d'erreurs détaillés (pour ne pas dévoiler des informations de configuration du serveur)
Et comme le souligne son auteur, cette précieuse astuce devrait faire partie intégrante des bonnes pratiques en terme de sécurité pour un serveur d'hébergement d'applications.
 
» Démarrer une discussion