Remarque
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de vous connecter ou de modifier des répertoires.
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de modifier des répertoires.
Ce document décrit la fonctionnalité de validation des demandes de ASP.NET où, par défaut, l’application n’est pas en mesure de traiter le contenu HTML non codé envoyé au serveur. Cette fonctionnalité de validation de requête peut être désactivée lorsque l’application a été conçue pour traiter en toute sécurité les données HTML.
S’applique à ASP.NET 1.1 et ASP.NET 2.0.
La validation de la demande, une fonctionnalité de ASP.NET depuis la version 1.1, empêche le serveur d’accepter du contenu contenant du code HTML non codé. Cette fonctionnalité est conçue pour empêcher certaines attaques par injection de script, par lesquelles le code de script client ou HTML peut être soumis à un serveur, stocké, puis présenté à d’autres utilisateurs. Nous vous recommandons toujours vivement de valider toutes les données d’entrée et le code HTML le cas échéant.
Par exemple, vous créez une page Web qui demande l’adresse e-mail d’un utilisateur, puis stocke cette adresse e-mail dans une base de données. Si l’utilisateur entre <une alerte SCRIPT>(« hello from script »)</SCRIPT> au lieu d’une adresse e-mail valide, lorsque ces données sont présentées, ce script peut être exécuté si le contenu n’a pas été correctement encodé. La fonctionnalité de validation de la demande de ASP.NET empêche ce problème.
Pourquoi cette fonctionnalité est utile
De nombreux sites ne savent pas qu’ils sont ouverts à des attaques par injection de script simples. Que l’objectif de ces attaques soit de défigurer le site en affichant du code HTML, ou de potentiellement exécuter un script client pour rediriger l’utilisateur vers le site d’un pirate, les attaques par injection de scripts sont un problème que les développeurs Web doivent gérer.
Les attaques par injection de script concernent tous les développeurs web, qu’ils utilisent ASP.NET, ASP ou d’autres technologies de développement web.
La fonctionnalité de validation de requête ASP.NET empêche de manière proactive ces attaques en n’autorisant pas le traitement du contenu HTML non codé par le serveur, sauf si le développeur décide d’autoriser ce contenu.
Ce à quoi s’attendre : page d’erreur
La capture d’écran ci-dessous montre un exemple de code ASP.NET :
L’exécution de ce code entraîne une page simple qui vous permet d’entrer du texte dans la zone de texte, de cliquer sur le bouton et d’afficher le texte dans le contrôle d’étiquette :
Toutefois, JavaScript, tel que <script>alert("hello!")</script> être entré et envoyé, nous obtiendrions une exception :
Le message d’erreur indique qu’une valeur Request.Form potentiellement dangereuse a été détectée et fournit plus de détails dans la description concernant exactement ce qui s’est produit et comment modifier le comportement. Par exemple:
La validation de la demande a détecté une valeur d’entrée client potentiellement dangereuse et le traitement de la demande a été abandonné. Cette valeur peut indiquer une tentative de compromission de la sécurité de votre application, telle qu’une attaque par script intersites. Vous pouvez désactiver la validation des demandes en définissant validateRequest=false soit dans la directive Page, soit dans la section de configuration. Toutefois, il est fortement recommandé que votre application vérifie explicitement toutes les entrées dans ce cas.
Désactivation de la validation des demandes sur une page
Pour désactiver la validation des demandes sur une page, vous devez définir l’attribut validateRequest de la directive Page sur false:
<%@ Page validateRequest="false" %>
Avertissement
Lorsque la validation de la demande est désactivée, le contenu peut être envoyé à une page ; il incombe au développeur de pages de s’assurer que le contenu est correctement encodé ou traité.
Désactivation de la validation des demandes pour votre application
Pour désactiver la validation des demandes pour votre application, vous devez modifier ou créer un fichier Web.config pour votre application et définir l’attribut validateRequest de la <pages /> section sur false:
<configuration>
<system.web>
<pages validateRequest="false" />
</system.web>
</configuration>
Si vous souhaitez désactiver la validation des demandes pour toutes les applications sur votre serveur, vous pouvez apporter cette modification à votre fichier Machine.config.
Avertissement
Lorsque la validation de la demande est désactivée, le contenu peut être envoyé à votre application ; il incombe au développeur d’applications de s’assurer que le contenu est correctement encodé ou traité.
Le code ci-dessous est modifié pour désactiver la validation des demandes :
Maintenant, si le code JavaScript suivant a été entré dans la zone <script>alert("hello!")</script> de texte, le résultat serait :
Pour éviter cela, avec la validation de la demande désactivée, nous devons encoder le contenu au format HTML.
Guide pratique pour encoder du contenu html
Si vous avez désactivé la validation de la demande, il est recommandé d’encoder du contenu html qui sera stocké pour une utilisation ultérieure. L’encodage HTML remplace automatiquement tout «< » ou «> » (avec plusieurs autres symboles) par leur représentation encodée HTML correspondante. Par exemple, '
Le contenu peut être facilement codé au format HTML sur le serveur à l’aide de l’API Server.HtmlEncode(string) . Le contenu peut également être facilement décodé au format HTML, c’est-à-dire rétabli au format HTML standard à l’aide de la Server.HtmlDecode(string) méthode.
Ce qui donne :