Il y a seul moyen de XSS risque si location.getLocDetails()
peut retourner entrée contrôlée par l'utilisateur. Si par exemple il renvoie la valeur directement de l'en-tête HTTP Accept-Language
sans aucune vérification de syntaxe ou échappement, alors il y a en effet des moyens de risques XSS.
Vous devriez toujours évasion affichage entrée pendant contrôlé par l'utilisateur, au moins toutes les entrées qui peuvent dans une certaine mesure être contrôlé par le client, y compris les en-têtes de requête HTTP et URL de la demande. Il est fondamentalement assez simple, il suffit d'utiliser un outil d'affichage qui échappe aux entités HTML <
, >
, "
et '
.
En cas de JSP, moyen le plus simple est d'utiliser JSTL (juste déposer jstl-1.2.jar dans /WEB-INF/lib
si pas encore fait) tag <c:out>
pour cela. Ainsi, la ligne particulière devrait être remplacé par (en supposant que location
est déjà disponible en page demande, session ou champ d'application):
var loc = '<c:out value="${location.locDetails}" />';
Cela dit, il est vrai temps de se débarrasser de tous scriptlets dans votre Fichier JSP, il ferait seulement mieux :) Pour en savoir plus sur JSTL, read this.
Que retourne 'location.getLocDetails()'? A quoi ressemble la source lorsque le JS est exécuté, et quelle est l'URL de votre site? Avez-vous vraiment une erreur sur cette ligne, ou sur la ligne que vous essayez d'utiliser 'loc'? – Kobi
Effectuez une Source d'affichage et mettez à jour votre question avec la valeur qui sera finalement rendue à la place de location.getLocDetails() –