36 votes

Une valeur potentiellement dangereuse de Request.Form a été détectée depuis le client - ASP.NET MVC

J'obtiens cette erreur dans mon application ASP.NET MVC où je prends l'entrée HTML à partir d'un WYSIWYG et je ne veux pas que le contenu soit validé.

J'ai essayé la solution que j'ai trouvée ici mais cela ne semble faire aucune différence dans mon application MVC. J'ai également essayé de le faire dans le web.config, mais là encore, rien.
Est-ce un bogue dans ASP.NET MVC ou autre ?

1 votes

Kelix, l'article auquel vous faites référence recommande d'utiliser le paramètre web.config [pages requestValidation="false"] ou l'attribut [@Page ValidateRequest="False"] de la vue. L'une ou l'autre de ces options devrait fonctionner correctement.

2 votes

Ce n'est pas le cas, tu vois : stackoverflow.com/questions/486408/

49voto

Craig Stuntz Points 95965

En MVC, vous utiliseriez l'option Valider l'entrée (faux) attribut.

Vous devez ensuite aseptiser vos entrées, par exemple avec quelque chose comme ce (intégré à ASP.NET 4.5+ ; utilisez le paquet NuGet pour les versions antérieures).

6 votes

Vous devez également avoir <httpRuntime requestValidationMode="2.0"/> dans web.config

4 votes

[AllowHtml] sur la propriété du modèle est encore mieux si vous le pouvez.

0 votes

La désactivation de la validation n'est PAS le moyen le plus sûr d'y parvenir, surtout si votre application est tournée vers l'Internet public. Envisagez d'utiliser une méthode plus granulaire [AllowHtml] attibute

29voto

Loren Points 563

Dans MVC 3 et les versions ultérieures, vous pouvez également utiliser la fonction [AllowHtml] attribut. Cet attribut vous permet d'être plus granulaire en sautant la validation pour une seule propriété de votre modèle.

https://docs.microsoft.com/en-us/dotnet/api/system.web.mvc.allowhtmlattribute?view=aspnet-mvc-5.2

0 votes

Cela a fonctionné pour moi, cela semble plus sûr que '[ValidateInput(false)]', merci.

0 votes

J'ai dû appliquer aux attributs du modèle ainsi qu'aux attributs correspondants du modèle de vue, puis cela a fonctionné.

0 votes

L'utilisation de cet attribut [AllowHtml] dans mon modèle a permis de supprimer l'erreur. Le scripting intersite sera-t-il toujours détecté ?

21voto

Pedro Jacinto Points 596

Il suffit de placer cet attribut : [ValidateInput(false)] sur la méthode d'action du contrôleur qui gère le formulaire.

4voto

JGilmartin Points 1974

Utiliser <httpRuntime requestValidationMode="2.0" /> dans la configuration web

0 votes

asp.net/(S(ywiyuluxr3qb2dfva1z5lgeg))/learn/whitepapers/aspnet4//learn/whitepapers/aspnet4/breaking-changes/#_TOC7)

3voto

Ryall Points 3428

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