Modification des paramètres de requête avec des filtres de servlet
Malgré des problèmes avec une application Web existante, le code source ne peut pas être modifié. Pour résoudre une vulnérabilité XSS, un filtre de servlet est envisagé pour nettoyer les paramètres. Cependant, l'absence de méthode setParameter dans ServletRequest pose un défi.
Solution 1 : HttpServletRequestWrapper
Une approche consiste à utiliser la classe HttpServletRequestWrapper. En sous-classant cette classe et en remplaçant la méthode getParameter, vous pouvez intercepter et renvoyer la valeur nettoyée. Cette requête encapsulée peut ensuite être transmise à chain.doFilter au lieu de l'original.
Solution 2 : Attributs de la requête
Une solution plus propre implique de modifier le servlet/JSP d'origine en accepter un attribut de requête au lieu d'un paramètre. Le filtre examinerait le paramètre, le nettoierait et définirait l'attribut à l'aide de request.setAttribute. Cette méthode évite le besoin de sous-classement ou d'usurpation d'identité, mais nécessite des modifications d'autres composants de l'application.
Considérations
L'utilisation de HttpServletRequestWrapper est conforme à l'API du servlet. Cependant, certains conteneurs de servlets peuvent soulever des objections si vous tentez de transmettre une requête modifiée à doFilter.
L'approche des attributs de requête offre une solution plus élégante mais nécessite des modifications de code supplémentaires. En fin de compte, le choix dépend de l'application spécifique et du niveau d'accès au code de l'application.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!