Échapper à toutes les chaînes dans JSP / Spring MVC
Je chaînes d'affichage dans ma JSP de cette façon:
${someString}
cette chaîne peut, bien sûr, contenir des caractères spéciaux html. Actuellement il est possible de HTML-injecter du code malveillant (par exemple. si someString est un include javascript - <script src...>
).
Comment puis-je m'assurer que toutes les chaînes sont échappés avant l'impression?
Je suis à l'aide de Spring MVC et JSP.
source d'informationauteur Joshua MN
Vous devez vous connecter pour publier un commentaire.
Vous pouvez utiliser JSTL de base :
Utilisation
<c:out value="${someString}"/>
balise pour afficher les Chaînes de caractères.<c:out>
échappe les caractères HTML, de sorte que vous pouvez éviter de cross-site scripting, vous pouvez spécifier que, par définition de l'attributescapeXml=true
. Un autre avantage est que vous pouvez également fournir une valeur par défaut dans le cas où levalue
évalue ànull
.Vous pouvez également utiliser
fn:escapeXml()
EL de la fonction. Vous devez inclure JSTL fonctions.Une autre manière , sera de construire une coutume ELResolver.
Ce blog fournit un exemple de la façon dont il peut être fait.
Pour l'ensemble de Spring MVC application , vous pouvez spécifier le sauvant dans la web.xml:
Mais alors, l'échappement ne s'applique qu'à la
spring
balises , comme :Enfin , vous pouvez essayer de la bibliothèque tierce XSSFilter.
En JSP/Java Vous devez utiliser ce code:
En JSP/HTML:
Vous pouvez également contrôler ce comportement au niveau de la page à l'aide de
<spring:htmlEscape defaultHtmlEscape="true" />