ESAPI XSS-Schutz für die vom Benutzer angegebene URL-Eigenschaft

Eine meiner REST-APIs erwartet eine Eigenschaft "url", die eine URL als Eingabe vom Benutzer erwartet. Ich benutze ESAPI, um XSS-Angriffe zu verhindern. Das Problem ist, dass die vom Benutzer angegebene URL ungefähr so ist

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

Die Methode cannonicalize des ESAPI-Encoders löst hier eine Aufschaltungsausnahme aus, die besagt, dass die Eingabe eine gemischte Codierung aufweist, da sie url-codiert ist und das Teil '& phiv;' als HTML-codiert und damit die Ausnahme behandelt wird.

Ich hatte ein ähnliches Problem bei der Bereinigung einer meiner Anwendungs-URLs, bei der der zweite Abfrageparameter mit "pa" oder "pi" begann und durch HTML-Dekodierung in Delta oder pi-Zeichen konvertiert wurde. Bitte beziehen Sie sich auf meinevorherige Stackoverflow-Frage hier

Da das Problem nun darin besteht, dass die gesamte URL als Eingabe vom Benutzer eingeht, kann ich die Abfrageparameter nicht einfach analysieren und einzeln bereinigen, da böswillige Eingaben erstellt werden können, die die beiden Abfrageparameter kombinieren und einzeln bereinigen Fall.

Beispiel: & ltscr kommt, ist der letzte Teil des Werts des ersten Abfrageparameters und ipt & gtalert (0); oder etwas kommt als erster Teil des nächsten Abfrageparameterkontexts.

Hat jemand ein ähnliches Problem konfrontiert? Ich würde wirklich gerne wissen, welche Lösungen ihr implementiert habt. Vielen Dank für alle Hinweise.

BEARBEITEN: Die folgende Antwort von 'avgvstvs' löst keine Einbruchsausnahme aus (Danke !!). Die Methode cannonicalize ändert jetzt jedoch die ursprüngliche Eingabezeichenfolge. ESAPI behandelt & phi des Abfrageparameters als HTML-codiertes Zeichen und ersetzt es durch '?' verkohlen. Sowas wie meine vorherige Frage, die hier verlinkt ist. Der Unterschied besteht darin, dass es sich um eine URL meiner Anwendung handelt, während dies eine Benutzereingabe ist. Kann ich hier nur eine weiße Liste führen?

Antworten auf die Frage(1)

Ihre Antwort auf die Frage