Un Request.Form potentiellement dangereux

Quelqu’un sait pourquoi je reçois l’erreur suivante? J’ai le débogage activé.

Server Error in '/' Application. -------------------------------------------------------------------------------- A potentially dangerous Request.Form value was detected from the client (strContent="

test

"). Description: Request Validation has detected a potentially dangerous client input value, and processing of the request has been aborted. This value may indicate an attempt to compromise the security of your application, such as a cross-site scripting attack. You can disable request validation by setting validateRequest=false in the Page directive or in the configuration section. However, it is strongly recommended that your application explicitly check all inputs in this case. Exception Details: System.Web.HttpRequestValidationException: A potentially dangerous Request.Form value was detected from the client (strContent="

test

"). Source Error: The source code that generated this unhandled exception can only be shown when comstackd in debug mode. To enable this, please follow one of the below steps, then request the URL: 1. Add a "Debug=true" directive at the top of the file that generated the error. Example: or: 2) Add the following section to the configuration file of your application: Note that this second technique will cause all files within a given application to be comstackd in debug mode. The first technique will cause only that particular file to be comstackd in debug mode. Important: Running applications in debug mode does incur a memory/performance overhead. You should make sure that an application has debugging disabled before deploying into production scenario. Stack Trace: [HttpRequestValidationException (0x80004005): A potentially dangerous Request.Form value was detected from the client (strContent="

test

").] System.Web.HttpRequest.ValidateSsortingng(Ssortingng s, Ssortingng valueName, Ssortingng collectionName) +8725306 System.Web.HttpRequest.ValidateNameValueCollection(NameValueCollection nvc, Ssortingng collectionName) +111 System.Web.HttpRequest.get_Form() +129 System.Web.HttpRequest.get_HasForm() +8725415 System.Web.UI.Page.GetCollectionBasedOnMethod(Boolean dontReturnNull) +97 System.Web.UI.Page.DeterminePostBackMode() +63 System.Web.UI.Page.ProcessRequestMain(Boolean includeStagesBeforeAsyncPoint, Boolean includeStagesAfterAsyncPoint) +6785 System.Web.UI.Page.ProcessRequest(Boolean includeStagesBeforeAsyncPoint, Boolean includeStagesAfterAsyncPoint) +242 System.Web.UI.Page.ProcessRequest() +80 System.Web.UI.Page.ProcessRequestWithNoAssert(HttpContext context) +21 System.Web.UI.Page.ProcessRequest(HttpContext context) +49 ASP.ajax_create_new_page_aspx.ProcessRequest(HttpContext context) +37 System.Web.CallHandlerExecutionStep.System.Web.HttpApplication.IExecutionStep.Execute() +181 System.Web.HttpApplication.ExecuteStep(IExecutionStep step, Boolean& completedSynchronously) +75 -------------------------------------------------------------------------------- Version Information: Microsoft .NET Framework Version:2.0.50727.3615; ASP.NET Version:2.0.50727.3618

Le message contient des éléments HTML (la

, dans votre cas) – cela peut indiquer une attaque de script entre sites , raison pour laquelle asp.net ne le permet pas par défaut.

Vous devez soit encoder HTML avant de soumettre (meilleure pratique), soit désactiver l’avertissement et vous exposer potentiellement à XSS.

Dans le fichier web.config, insérez l’élément httpRuntime avec l’atsortingbut requestValidationMode = “2.0” dans les balises. Ajoutez également l’atsortingbut validateRequest = “false” dans l’élément pages.

       

C’est parce que vous avez des balises HTML dans votre demande POST . Pour l’autoriser, vous devez définir ValidateRequest= false dans vos directives @Page . Mais rappelez-vous que cela peut exposer votre site à des attaques de type Cross Site Scripting Attacks.

Assurez-vous de modifier le fichier Web.config. Je le changeais dans les fichiers Web.debug.config et Web.release.config et cela ne fonctionnerait pas.

Je devais partir à la chasse un peu dans mon fichier web.config , plus précisément dans la section xml de system.web , pour trouver où je pourrais mettre à jour les directives … comme vous l’avez indiqué. Dès que j’ai ajouté l’atsortingbut validateReqest = "false" à la directive pages du fichier web.config , tout est redevenu complet.

Dans mon cas particulier, ce n’est PAS sur un serveur de production et ce n’est pas non plus un code de niveau «production». C’est un serveur local privé, avec moi uniquement comme utilisateur unique dans l’environnement, ce qui me permet de mieux me sentir pour la mise à jour de ce paramètre. Comme ci-dessous:

    

S’il s’agit d’une application MVC, vous pouvez appliquer cet atsortingbut au niveau d’ Controller Action pour ignorer la validation des entrées:

[ValidateInput (false)]

Placez l’atsortingbut [AllowHtml] dans votre modèle.