93 votes

Double une séquence d'échappement à l'intérieur d'une URL : Le module de filtrage de requêtes est configuré pour refuser une requête contenant une double séquence d'échappement

Sur mon application ASP.NET MVC, j'essaie de mettre en œuvre une URL comme ci-dessous :

/produit/tags/pour+familles

Lorsque j'essaie d'exécuter mon application avec les configurations par défaut, je reçois ce message avec le code de réponse 404.11 :

Erreur HTTP 404.11 - Non trouvé

Le module de filtrage des requêtes est configuré pour refuser une requête qui contient une double séquence d'échappement.

Je peux contourner cette erreur en implémentant le code ci-dessous à l'intérieur de mon fichier web.config :

Du coup, je ne reçois plus de 404.11.

Ce que je me demande, c'est quels types de failles de sécurité j'ouvre avec cette mise en œuvre.

Au fait, mon application est sous le .Net Framework 4.0 et s'exécute sous IIS 7.5.

0 votes

Est-il possible d'accéder à la ressource souhaitée en utilisant /produit/étiquettes/pour%20les%20familles à la place ? Vous avez donc une solution de contournement pour les identifiants contenant des espaces. Ou ai-je complètement faux ici ?

0 votes

@atornblad un peu hors sujet je suppose. Ma question : ce que je me demande, c'est de quels types de failles de sécurité j'ouvre avec cette implémentation.

5 votes

IIS jette sur le caractère "+", qui est le comportement par défaut de Microsoft.

1voto

unvascorriendo Points 19

Encoder la chaîne chiffrée séparée :

return HttpServerUtility.UrlTokenEncode(Encoding.UTF8.GetBytes("string"));

Décoder la chaîne chiffrée séparée :

string x = Encoding.UTF8.GetString(HttpServerUtility.UrlTokenDecode(id));

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