Struts 2 encoder les paramètres d'entrée pour éviter les attaques de type XSS
J'ai une application développée avec Struts 2. Il a quelques problèmes avec le Cross-site scripting (XSS) les attaques. Je veux coder certaines des actions les paramètres d'entrée d'une manière similaire à JSP <c:out value="${somevalue}"/>
Est-il facile d'approche pour ce faire, dans Struts 2? API Java de la méthode, ferait l'affaire.
EDIT j'ai trouvé celui - http://www.owasp.org/index.php/Talk:How_to_perform_HTML_entity_encoding_in_Java
Aucune expérience avec elle?
Vous devez spécifier comment le XSS sont possibles, si vous utilisez s:propriété, alors le "<h1>bonjour!</h1>" rendra aussi juste que... vous devez définir l'évasion valeur false à la propriété pour vous de code html dans la balise de propriété au moins. s:la propriété est populaire pour la sortie de sorte que vous devez être en train de faire quelque chose de différent?
Je ne veux pas changer la sortie, la demande est trop complexe pour cela.
Je ne veux pas changer la sortie, la demande est trop complexe pour cela.
OriginalL'auteur Boris Hamanov | 2011-02-09
Vous devez vous connecter pour publier un commentaire.
Vous pouvez utiliser
Il ya aussi une Bonne API JSoup
Donc, tout ce que vous devez faire est la suivante au cours de traitement de texte soumis:
Il est struts2securityaddons
Voir aussi
OriginalL'auteur Jigar Joshi
Échapper paramètres d'entrée comme un XSS prévention de la moyenne a plusieurs disadvanteges, en particulier:
À cet effet, il serait mieux de manière cohérente, d'échappement de sortie à la place.
Voir aussi:
Encore, s'échappant sur le trafic entrant est louche. Si de nouvelles attaques méthodes sont découverts -- allez-vous reincode tous les données que vous avez accumulé jusqu'à présent? Aussi, vous assumez que vous voulez toujours de sortie html. Et si dans l'avenir vous souhaitez émettre text/plain? vous aurez toutes ces funky html escape codes dans votre sortie.
OriginalL'auteur axtavt
Il n'est pas facile, hors de la boîte solution contre les XSS avec struts 2 balises. L'OWASP ESAPI API a un certain appui pour l'échappement qui est très utile, et ils ont des bibliothèques de balises.
Mon approche était essentiellement à étendre le stuts 2 balises dans l'une des façons suivantes.
Si vous ne voulez pas modifier les classes dans l'étape 1, une autre approche serait d'importer l'ESAPI tags dans le freemarker modèles et échapper au besoin. Alors si vous avez besoin d'utiliser un s:propriété de la balise dans votre JSP, enveloppez-la avec et ESAPI tag.
J'ai écrit une explication plus détaillée ici.
http://www.nutshellsoftware.org/software/securing-struts-2-using-esapi-part-1-securing-outputs/
Je suis d'accord échapper à des entrées n'est pas l'idéal.
OriginalL'auteur brett.carr