Un Request.Form potentiellement dangereux
Ce que quelqu'un sait pourquoi j'obtiens 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="<p>
test</p>
").
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="<p>
test</p>
").
Source Error:
The source code that generated this unhandled exception can only be shown when compiled 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:
<%@ Page Language="C#" Debug="true" %>
or:
2) Add the following section to the configuration file of your application:
<configuration>
<system.web>
<compilation debug="true"/>
</system.web>
</configuration>
Note that this second technique will cause all files within a given application to be compiled in debug mode. The first technique will cause only that particular file to be compiled 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="<p>
test</p>
").]
System.Web.HttpRequest.ValidateString(String s, String valueName, String collectionName) +8725306
System.Web.HttpRequest.ValidateNameValueCollection(NameValueCollection nvc, String 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
source d'informationauteur oshirowanen
Vous devez vous connecter pour publier un commentaire.
Le post contient les éléments HTML (le
<p>
balise, dans votre cas) - cela peut être l'indication d'un cross site scripting attaquequi est pourquoi asp.net ne le permet pas par défaut.Vous devez soit de codage HTML avant de le soumettre (meilleure pratique), ou désactiver l'avertissement et potentiellement exposer XSS.
Dans le web.fichier de config, dans les tags, insérer l'élément httpRuntime avec l'attribut requestValidationMode="2.0". Également ajouter de la validateRequest="false" attribut dans les pages de élément.
C'est parce que vous avez des balises HTML dans votre
POST
demande. Pour permettre cela, vous devez Définir leValidateRequest= false
dans votre@Page
directives. Mais rappelez-vous ceci pouvez exposer votre site pour le Cross Site Scripting Attaques.Assurez-vous de changer
dans le Web.config. J'était en train de changer dans le Web.debug.config et Web.la libération.les fichiers de configuration et que ça ne marcherait pas.
J'ai dû aller à la chasse un peu dans mon
web.config
fichier, en particulier dans lesystem.web
xml, pour trouver où je pourrais mettre à jour le<pages>
directives... comme vous l'avez noté. Dès que j'ai ajouté levalidateReqest = "false"
attribut pour les pages directive dans un délai deweb.config
fichier, il a fait tout ensemble à nouveau.Dans mon cas particulier, il n'est PAS sur un serveur de production, cependant, et ce n'est pas la "production" de niveau code. C'est un privé serveur local, avec moi seulement comme le seul utilisateur dans l'environnement de sorte qu'il me fait me sentir mieux à propos de la mise à jour de ce paramètre. Comme ci-dessous:
Si c'est une application MVC, vous pouvez appliquer cet attribut sur
Controller Action
niveau d'ignorer la validation des entrées: