working valor validaterequest validate the potentially posible peligroso not mvc from form false detectó detected dangerous ctl00 contentplaceholder1 cliente c# jquery asp.net architecture postback

valor - validate request c#



Se detectó un valor Request.Form potencialmente peligroso del cliente (8)

"Se detectó un valor Request.Form potencialmente peligroso del cliente" ..

1) establezca httpRuntime requestValidationMode="2.0" requestPathInvalidCharacters="<,>,/" en web.config archivo web.config

2) establecer validateRequest="false" en la etiqueta de páginas laterales en el archivo web.config

<system.web> <httpRuntime requestValidationMode="2.0" requestPathInvalidCharacters="&lt;,&gt;,/"/> <pages controlRenderingCompatibilityVersion="3.5" clientIDMode="AutoID" validateRequest="false"/> <system.web>

Tengo este problema. Lo he intentado todo. ValidateRequest = "false" .. y decodificación y codificación de html ... etc. etc.

Lo que necesito es un cuadro emergente (por lo tanto, estoy usando ModalPopupExtender) para presentar a un usuario donde las personas pueden escribir configuraciones xml y hacer clic en el botón Aceptar / Cancelar para cerrar la ventana emergente y guardar.

Sin embargo, sigo recibiendo este error "Se detectó un valor de Request.Form potencialmente peligroso del cliente" ..

Aquí está mi código de prueba a continuación (ejemplo rápido de mi escenario y error) ..

<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="WebForm1.aspx.cs" Inherits="WebApplication1.WebForm1" ValidateRequest="false" %> <%@ Register Assembly="AjaxControlToolkit" Namespace="AjaxControlToolkit" TagPrefix="cc1" %> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head runat="server"> <title></title> </head> <body> <form id="form1" runat="server"> <asp:ScriptManager ID="ScriptManager1" runat="server"> </asp:ScriptManager> <div> <asp:Panel ID="Popup" runat="server" Width="800px" Style="display: none;"> <asp:LinkButton ID="Display" runat="server" Style="display: none;" OnClick="Display_Click" /> <cc1:ModalPopupExtender ID="ModalPopupExtender" runat="server" TargetControlID="Display" PopupControlID="Popup" DropShadow="false" Y="10" /> <div id="Item"> <div class="Item"> <table width="100%"> <tr> <td> <textarea id="txtAreaValue" cols="35" rows="6" style="resize: none;" runat="server" /> </td> </tr> <tr> <td> <asp:Button ID="btnOk" Text="Ok" SkinID="default" Width="50px" runat="server" /> <asp:Button ID="btnCancel" Text="Cancel" SkinID="default" Width="50px" OnClick="BtnCancel_Click" runat="server" /> </td> </tr> </table> </div> </div> </asp:Panel> </div> </form> </body> </html>

Código detrás:

using System; using System.Collections.Generic; using System.Linq; using System.Web; using System.Web.UI; using System.Web.UI.WebControls; namespace WebApplication1 { public partial class WebForm1 : System.Web.UI.Page { protected void Page_Load(object sender, EventArgs e) { ModalPopupExtender.Show(); string str = "<?xml version=/"1.0/" encoding=/"utf-8/"?><XmlConfig xmlns:xsi=/"http://www.w3.org/2001/XMLSchema-instance/" xmlns:xsd=/"http://www.w3.org/2001/XMLSchema/"> <XmlConfig Type=/"TEST/" DefiningXpath=/"/PERSON/NAME/"><Index Name=/"Name/" XPath=/"/PERSON/NAME/VALUE/" Type=/"String/" /><Index Name=/"Id/" XPath=/"/PERSON/NAME/ID/" Type=/"String/" /> </XmlConfig></XmlConfig>"; txtAreaValue.InnerText = str; } protected void Display_Click(object sender, EventArgs e) { //Shows the Item detail Edit box ModalPopupExtender.Show(); } protected void BtnCancel_Click(object sender, EventArgs e) { ModalPopupExtender.Hide(); } } }

Para ejecutar el código ... Agregue ref a AjaxControltoolkit.dll y luego ejecute y verá que el área de texto se rellena con xml. Haga clic en el botón Cancelar y esto causa el error. ¿Puede alguien ayudarme?


Aquí están las posibles soluciones que pueden ayudarte. Haga los ajustes de configuración del lado del servidor para esto. Si desea permitir el elemento HTML como entrada de las páginas seleccionadas en su proyecto, establezca este atributo de página.

<%@ Page ValidateRequest="false" %>

Este ValidateRequest = "falso" en cada página. Si desea en todas las páginas de su proyecto, realice cambios en el archivo Web.Config. Añadir esta etiqueta en la sección.

Si está utilizando .Net 4.0, debe realizar un cambio más en el archivo Web.Config. Añadir esta etiqueta en la sección.

<httpRuntime requestValidationMode="2.0" />

Aquí están las configuraciones para no validar la solicitud de todas las páginas en .Net 4.0

<configuration> <system.web> <httpRuntime requestValidationMode="2.0" /> </system.web> <pages validateRequest="false"> </pages> </configuration>

Aquí está el ejemplo completo en esto. Haga clic aquí...


Bueno, la gente está hablando solo de Asp.net 4.0 ... Supongo que también necesitamos abordar otras versiones. Hoy tuve el mismo problema cuando reemplacé mi editor AjaxToolkit con TinyMCE y con la devolución de datos encontré el mismo problema.

"Se detectó un valor Request.Form potencialmente peligroso del cliente" ..

Así que usé esta línea dentro de mi webconfig y funcionó para mí.

<system.web> <pages validateRequest="false" /> </system.web>

Debería funcionar en Asp.net 2.0 a 3.5.

ACTUALIZACIÓN: Incluso funciona hasta .net 4.5

ACTUALIZACIÓN: también puede intentar validar la solicitud en el nivel de la página en lugar de un sitio web completo. Solo quería dejar a los lectores elegir la mejor manera. Gracias DVD por señalar esto.


Creé un artículo de tabla con las columnas articleId y article_content. También usé el editor html para la columna article_content. Cuando traté de salvar recibí el mismo error. Se resolvió agregando [AllowHtml] a la propiedad article_content en la clase.

[AllowHtml] [Required] public string article_content { get; set; }

No olvide incluir el espacio de nombres usando System.Web.Mvc. Para más detalles: http://www.infinetsoft.com/Post/A-potentially-dangerous-Request-Form-value-was-detected-from-the-client/1246


Hay 3 opciones para eliminar este error.

  1. Establezca validateRequest="false" en las directivas de página.
  2. Establezca validateRequest="false" en el archivo web.config.
  3. Establezca requestValidationMode="2.0" en web.config si está usando DotNet 4.0

Echa un vistazo a este enlace para más información.


Me enfrenté a este mismo problema al enviar algunas plantillas de correo electrónico desde la página aspx al código detrás ...

Así que traté de resolver esto añadiendo

<httpRuntime requestValidationMode="2.0" />

en mi configuración web bajo enter code here `pero eso no me ayudó a menos que pusiera

ValidateRequest="false"

attrribute en la directiva de página de la página aspx.


Puede usar JavaScript para codificar los valores antes de enviarlos al servidor, si se ajusta a sus necesidades

ver esta respuesta


Utilizar

<httpRuntime requestValidationMode="2.0" />

en su web.config (manteniendo cualquier atributo que ya tenga en ese elemento, si ya está allí). ASP.NET4.0 ignora ValidateRequest contrario.

Y, por supuesto, asegúrese de tomar las medidas necesarias para protegerse contra solicitudes realmente peligrosas, ahora que no se está haciendo por usted.

Edición: una excelente manera de hacerlo es crear su propia clase derivada de RequestValidator y usar el comportamiento 4.0, pero con esa clase como la clase que realiza la comprobación.