Comment faire pour tester par programme les problèmes de canonicalisation avec ASP.NET

Traductions disponibles Traductions disponibles
Numéro d'article: 887459 - Voir les produits auxquels s'applique cet article

Exclusion

Les informations fournies dans la Base de connaissances Microsoft sont "en l'état" sans garantie d'aucune sorte. Nous excluons toute garantie expresse ou implicite, y compris toute garantie de qualité et d?adéquation à un usage particulier. Microsoft Corporation ou ses fournisseurs ne pourront en aucun cas être tenus pour responsables de tout dommage de quelque nature que ce soit, y compris les dommages directs, indirects, accessoires, consécutifs, pertes de bénéfice ou dommages spéciaux, même si Microsoft Corporation ou ses fournisseurs ont été prévenus de l'éventualité de tels dommages. Certains pays n'autorisent pas l'exclusion ou la limitation des responsabilités pour les dommages indirects ou accessoires. De ce fait, la limitation ci-dessus peut ne pas être applicable.
Agrandir tout | Réduire tout

Sommaire

INTRODUCTION

Cet article décrit comment protéger davantage une application ASP.NET contre les problèmes courants de canonicalisation.

Plus d'informations

Qu'est-ce que la canonicalisation ?

La canonicalisation est le processus qui détermine comment plusieurs formes équivalentes d'un nom sont résolues en un nom standard unique. Ce nom standard unique est également appelé nom canonique. Par exemple, sur un ordinateur spécifique, les noms c:\dir\test.dat, test.dat et ..\..\test.dat peuvent tous faire référence au même fichier. La canonicalisation est le processus qui mappe ces noms à un nom tel que c:\dir\test.dat.

Lorsqu'une URL est reçue par un serveur Web, le serveur mappe la demande à un chemin d'accès du système de fichiers qui détermine la réponse. La routine de canonicalisation qui est utilisée pour mapper la demande doit analyser correctement l'URL afin de ne pas fournir ou traiter du contenu inattendu. Pour plus d'informations sur la canonicalisation, reportez-vous au site Web de Microsoft (en anglais) à l'adresse suivante :
http://msdn2.microsoft.com/en-us/library/aa302420.aspx
Il est recommandé d'utiliser les méthodes conseillées pour protéger vos applications. Pour obtenir des informations supplémentaires, consultez la section suivante.

Ajout de protections de canonicalisation supplémentaires à votre application Web

Les développeurs Microsoft ASP.NET peuvent ajouter des contrôles supplémentaires afin de réduire les risques de canonicalisation pour une application Web en ajoutant un gestionnaire d'événements Application_BeginRequest à leur fichier Global.asax stocké dans le répertoire racine de l'application Web. Ce gestionnaire d'événements s'exécute à chaque demande Web. Vous pouvez ajouter du code à ce gestionnaire d'événements pour protéger votre application contre les problèmes de canonicalisation.

Exemple de code

Les exemples de code suivants montrent comment ajouter un gestionnaire d'événements Application_BeginRequest à un fichier Global.asax. Ce gestionnaire d'événements permet d'empêcher les caractères non valides et les formats d'URL incorrects, en effectuant des vérifications de chemin d'accès. Ceci vous évite les problèmes classiques de canonicalisation.

Exemple de code Global.asax (Visual Basic .NET)

<script language="vb" runat="server">
Sub Application_BeginRequest(Sender as Object, E as EventArgs)
    If (Request.Path.IndexOf(chr(92)) >= 0 OR _
        System.IO.Path.GetFullPath(Request.PhysicalPath) <> Request.PhysicalPath) then
        Throw New HttpException(404, "Not Found")
    End If
End Sub
</script>

Exemple de code Global.asax (C#)

<script language="C#" runat="server">
void Application_BeginRequest(object source, EventArgs e) {
    if (Request.Path.IndexOf('\\') >= 0 ||
        System.IO.Path.GetFullPath(Request.PhysicalPath) != Request.PhysicalPath) {
        throw new HttpException(404, "not found");
    }
}
</script>

Propriétés

Numéro d'article: 887459 - Dernière mise à jour: lundi 3 décembre 2007 - Version: 2.5
Les informations contenues dans cet article s'appliquent au(x) produit(s) suivant(s):
  • Microsoft ASP.NET 1.0
  • Microsoft ASP.NET 1.1
  • Microsoft .NET Framework 1.0
  • Microsoft .NET Framework 1.0 Service Pack 1
  • Microsoft .NET Framework 1.0 Service Pack 2
  • Microsoft .NET Framework 1.0 Service Pack 3
  • Microsoft .NET Framework 1.1
  • Microsoft .NET Framework 1.1 Service Pack 1
Mots-clés : 
kbsecurity kbtshoot KB887459
L'INFORMATION CONTENUE DANS CE DOCUMENT EST FOURNIE PAR MICROSOFT SANS GARANTIE D'AUCUNE SORTE, EXPLICITE OU IMPLICITE. L'UTILISATEUR ASSUME LE RISQUE DE L'UTILISATION DU CONTENU DE CE DOCUMENT. CE DOCUMENT NE PEUT ETRE REVENDU OU CEDE EN ECHANGE D'UN QUELCONQUE PROFIT.

Envoyer des commentaires

 

Contact us for more help

Contact us for more help
Connect with Answer Desk for expert help.
Get more support from smallbusiness.support.microsoft.com