Deshabilitar solicitud.Validación/Codificar URL

Tengo una página de formularios web asp.net simple que simplemente intercepta solicitudes http, extrae parámetros de la cadena de consulta, realiza algunas comprobaciones y redirige la solicitud en función de los parámetros.

Últimamente, he visto errores HttpRequestValidationException en el registro. Esto se debe a que las direcciones URL que estamos tomando no están codificadas y tenemos Request.Validation establecido en verdadero.

Ahora, me gustaría dejar de recibir este error, pero aún me gustaría estar protegido contra la inyección. Estaba pensando que podría desactivar Request.Validation y simplemente codificar la URL antes de hacer algo con ella. ¿Es esta una solución válida? Además, ¿qué tipo de codificación debo usar? ¿Codificación HTML o codificación URL? Supongo que la codificación HTML no protegerá contra la inyección de javascript o sql, ¿verdad?

Gracias de antemano.

preguntado el 03 de mayo de 12 a las 17:05

1 Respuestas

Ahora, me gustaría dejar de recibir este error.

¿Hay alguna razón por la que le gustaría dejar de recibir esto? Esto es bueno: te dice que se detectó una solicitud peligrosa. Si desea evitar que estos golpeen los registros, ¿por qué no tragarse la excepción?

Esto haría el truco (Global.asax):

void Application_Error(object sender, EventArgs e)
{

    Exception exc = Server.GetLastError();
    if(exc.GetType() == typeof(HttpRequestValidationException))
    {
        //ignore and don't write to log
    }

}

Esto también tiene la ventaja de seguir registrando todas las demás excepciones.

contestado el 03 de mayo de 12 a las 18:05

Bueno, las solicitudes que estoy interceptando provienen de mi sistema, así que sé que las solicitudes no son realmente peligrosas, simplemente no están codificadas. - user1373121

No es la respuesta que estás buscando? Examinar otras preguntas etiquetadas or haz tu propia pregunta.