Prevención ESAPI XSS para la propiedad de URL proporcionada por el usuario

Una de mis API REST está esperando una propiedad "url" que espera una URL como entrada del usuario. Estoy usando ESAPI para evitar ataques XSS. El problema es que la URL proporcionada por el usuario es algo así como

http://example.com/alpha?abc=def&phil=key%3dbdj

El método cannonicalize del codificador ESAPI arroja una excepción de intrusión aquí alegando que la entrada tiene codificación mixta, ya que está codificada en URL y la pieza '& phi' se trata como codificada en HTML y, por lo tanto, la excepción.

Tuve un problema similar al desinfectar una de las URL de mi aplicación donde el segundo parámetro de consulta comenzó con 'pa' o 'pi' y se convirtió en caracteres delta o pi mediante decodificación HTML. Por favor refiérase a mipregunta anterior de Stackoverflow aquí

Ahora, dado que el problema es que, dado que toda la URL viene como entrada del usuario, no puedo simplemente analizar los parámetros de Consulta y desinfectarlos individualmente, ya que se pueden crear entradas maliciosas combinando los dos parámetros de consulta y desinfectarlos individualmente no funcionará en ese sentido. caso.

Ejemplo: & ltscr viene es la última parte del valor del parámetro de la primera consulta e ipt & gtalert (0); o algo viene como primera parte del siguiente contexto de control de parámetro de consulta.

¿Alguien ha enfrentado un problema similar? Realmente me gustaría saber qué soluciones implementaron. Gracias por cualquier sugerencia.

EDITAR: La respuesta a continuación de 'avgvstvs' no arroja la excepción de intrusión (¡Gracias!). Sin embargo, el método cannonicalize ahora cambia la cadena de entrada original. ESAPI trata la phi del parámetro de consulta como un char codificado en html y lo reemplaza por '?' carbonizarse. Algo así como mi pregunta anterior que está vinculada aquí. La diferencia es que era una URL de mi aplicación, mientras que esto es entrada del usuario. ¿Mi única opción es mantener una lista blanca aquí?

Respuestas a la pregunta(1)

Su respuesta a la pregunta