Saltar al contenido

Se detectó un valor de Request.QueryString potencialmente peligroso del cliente al enviar el marcado html desde jquery post call a la página asp.net

Al fin después de tanto trabajar ya encontramos el arreglo de esta escollo que tantos usuarios de nuestro sitio web han tenido. Si tienes algún detalle que aportar puedes dejar tu información.

Solución:

Si esto es ASP.NET 4, hubo un cambio importante con ValidateRequest. Consulte esta pregunta de StackOverflow para obtener más información sobre requestValidationMode.

Ya hay una buena respuesta para esto, y aquí proporcionaré la información para que no tenga que hacer clic en los enlaces.

Cuando ejecute ASP.NET 4.0, deberá configurar lo siguiente en su archivo web.config RequestValidationMode="2.0".

¿Para qué es esta propiedad?

Un valor que indica qué enfoque de validación específico de la versión de ASP.NET se utilizará. El valor predeterminado es 4.0.

Entonces, ¿cuáles son los valores posibles?

  • 4.0 (el predeterminado). El objeto HttpRequest establece internamente un indicador que indica que la validación de la solicitud debe activarse cada vez que
    Se accede a los datos de la solicitud HTTP. Esto garantiza que la solicitud
    la validación se activa antes de que se envíen datos como cookies y direcciones URL.
    accedido durante la solicitud. La configuración de validación de solicitudes del
    elemento de páginas (si lo hay) en el archivo de configuración o de la página @
    directiva en una página individual se ignoran.

  • 2.0. La validación de solicitudes está habilitada solo para páginas, no para todas las solicitudes HTTP. Además, la configuración de validación de solicitudes del elemento de páginas (si existe) en el archivo de configuración o de la directiva @ Page en una página individual se utilizan para determinar qué solicitudes de página validar.

Información citada de este sitio msdn.

Si desea agregar una lógica de validación personalizada para una página ASP.NET en particular o para una o más consultas string parámetros sin configurar ValidateRequest="false" para toda la página: la siguiente solución “hacky” podría ser útil:

public partial class MyPage : System.Web.UI.Page

    private string SomeUnvalidatedValue  get; set; 

    public override void ProcessRequest(HttpContext context)
    
        var queryString = context.Request.QueryString;

        var readOnly = queryString.GetType().GetProperty("IsReadOnly",
            System.Reflection.BindingFlags.Instance 

La expresión regular creada como resultado del análisis de este método ASP.NET: CrossSiteScriptingValidation.IsDangerousString

Código probado con .NET 4.5.2, modo integrado IIS, con y sin RequestValidationMode="2.0".

Recuerda que te brindamos la opción de agregar una reseña .

¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)



Utiliza Nuestro Buscador

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *