2010-02-23 7 views
0

Dans mon application Java, j'empêche les attaques XSS. Je veux encoder l'URL et les paramètres de champs cachés dans les objets HttpServletRequest sur lesquels j'ai un handle.HttpServletRequest - Méthode rapide pour encoder les paramètres d'URL et de champ caché

Comment ferais-je cela?

+0

Pouvez-vous clarifier votre question? Encode-les pour quoi? –

+0

Je veux les encoder pour un affichage sécurisé dans une page HTML, par ex. avec des caractères d'échappement – AJM

Répondre

1

Pour afficher correctement les données saisies par l'utilisateur sur une page HTML, vous devez simplement vous assurer que les caractères HTML spéciaux sont correctement codés en tant qu'entités, via String#replace ou similaire. Les bonnes nouvelles sont qu'il ya très peu vous avez besoin d'encoder (à cette fin):

str = str.replace("&", "&amp;").replace("<", "&lt;"); 

Vous pouvez également remplacer > si vous voulez, mais il n'y a pas besoin.

Ce n'est pas seulement à cause de XSS, mais aussi juste pour que les caractères apparaissent correctement. Vous voudrez peut-être aussi vous assurer que les caractères à l'extérieur du jeu latin commun sont transformés en entités appropriées, pour se protéger contre les problèmes de charset (UTF-8 vs. Windows-1252, etc.).

+0

Vous avez également besoin de '' ', sinon le contenu des attributs ne sera pas sûr – Kornel

+0

@porneL: Seulement si la sortie en question est sortie en tant que valeur d'attribut, et seulement si vous avez utilisé des guillemets doubles citez l'attribut (HTML permet des guillemets simples ou doubles pour les attributs de guillemets). –