Mi aplicación web está construida con ASP.Net MVC5. Uno de los métodos acepta los parámetros de cadena de consulta. Las pruebas de seguridad han informado que acepta cadenas de consulta maliciosas y se muestra en el cuerpo sin ninguna modificación.
el paginador de MVCContrib para la paginación agrega la url, incluidos los parámetros de consulta, a la salida html.
descripción detallada a continuación
El nombre de un parámetro de URL suministrado arbitrariamente se copia en el valor de un atributo de etiqueta HTML que está encapsulado entre comillas dobles. La carga útil 7dc29"style="behavior:url(#default#time2)"onbegin="alert(1)"2d524
se envió con el nombre de un parámetro de URL suministrado arbitrariamente. Esta entrada se hizo eco sin modificaciones en la respuesta de la aplicación.
Este ataque de prueba de concepto demuestra que es posible inyectar JavaScript arbitrario en la respuesta de la aplicación. El ataque de prueba de concepto demostrado utiliza una expresión evaluada dinámicamente con un atributo de estilo para introducir JavaScript arbitrario en el documento. Tenga en cuenta que esta técnica es específica de Internet Explorer y puede que no funcione en otros navegadores.
Tengo un filtro QueryString para buscar entradas de lista negra @"</?\w+((\s+\w+(\s*=\s*(?:"".*?""|'.*?'|[^'"">\s]+))?)+\s*|\s*)/?>", "<img", "<iframe", "\";", "¼script¾", "embed src"
también desinfecto el parámetro usando Microsoft.Security.Application.Sanitizer.GetSafeHtmlFragment()
Mi pregunta: ¿Es suficiente para asegurar el ataque XSS? ¿O cómo puedo eliminar la cadena de consulta maliciosa?