Prevenção ESAPI XSS para a propriedade de URL fornecida pelo usuário

Uma das minhas APIs REST está esperando uma propriedade "url" que espera um URL como entrada do usuário. Estou usando ESAPI para impedir ataques XSS. O problema é que o URL fornecido pelo usuário é algo como

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

O método cannonicalize do codificador ESAPI gera uma exceção de intrusão aqui, alegando que a entrada possui codificação mista, uma vez que é codificada por URL e a peça '& phi' é tratada como codificada em HTML e, portanto, a exceção.

Eu tive um problema semelhante ao limpar um dos meus URLs do aplicativo em que o segundo parâmetro de consulta começou com 'pa' ou 'pi' e foi convertido em caracteres delta ou pi por decodificação HTML. Por favor, consulte o meupergunta anterior sobre Stackoverflow aqui

Agora, já que o problema é que, como todo o URL está vindo como entrada do usuário, não posso simplesmente analisar os parâmetros de Consulta e higienizá-los individualmente, pois uma entrada maliciosa pode ser criada combinando os dois parâmetros de consulta e higienizando-os individualmente não funcionará nesse caso.

Exemplo: & ltscr comes é a última parte do primeiro parâmetro de consulta e ipt & gtalert (0); ou algo surge como primeira parte do próximo contexto de controle de parâmetros de consulta.

Alguém já enfrentou um problema semelhante? Eu realmente gostaria de saber quais soluções vocês implementaram. Obrigado por qualquer indicação.

EDIT: A resposta abaixo de 'avgvstvs' não lança a exceção de intrusão (Obrigado !!). No entanto, o método cannonicalize agora altera a sequência de entrada original. O ESAPI trata & phi do parâmetro de consulta como um caractere codificado em html e o substitui por '?' Caracteres. Algo como a minha pergunta anterior, que está vinculada aqui. A diferença é que era uma URL do meu aplicativo, enquanto essa é a entrada do usuário. Minha única opção é manter uma lista branca aqui?

questionAnswers(1)

yourAnswerToTheQuestion