2017-10-20 23 views
0

J'ai l'application web Struts 2.x. Dans cette application, j'utilise XMLHttpRequest pour actualiser un div avec une table. J'ai une page JSP distincte pour le rendu de la table HTML. Je reçois la réponse de la page JSP dans XMLHttpRequest et mettre à jour la réponse à div. Veracode affiche le problème XSS sur la ligne de code innerHTML. Comment puis-je désinfecter le contenu HTML ici? Si la page JSP génère une sortie HTML, ce que vous avez est correct.Veracode signale un problème XSS dans XMLHttpResponse Javascript

function ajaxFileUploadRefresh(){ 
    var xmlhttp; 
    if (window.XMLHttpRequest){// code for IE7+, Firefox, Chrome, Opera, Safari 
     xmlhttp=new XMLHttpRequest(); 
    } 
    else{// code for IE6, IE5 
     xmlhttp=new ActiveXObject("Microsoft.XMLHTTP"); 
    } 
    xmlhttp.onreadystatechange=function(){ 
    if (xmlhttp.readyState==4 && xmlhttp.status==200){ 
     document.getElementById("StatusDiv").innerHTML=xmlhttp.responseText; // Refreshing the Div with response. This is where Veracode shows error. 
     } 
    } 
    xmlhttp.open("POST","StrutsAction_methodName",true); // This action will be redirected to jsp 
    xmlhttp.setRequestHeader("Content-type", "application/x-www-form-urlencoded"); 
    xmlhttp.send(postString); 
} 
+0

"Comment désinfecter le contenu HTML ici?" - Pourquoi a-t-il besoin d'être assaini? L'URL 'StrutsAction_methodName' n'est-elle pas digne de confiance? Il semble faire partie du même site! – Quentin

+0

Merci @Quentin. Je n'aurais probablement pas dû utiliser Sanitize ici. Mais l'outil veracode me montre un problème XSS lorsque la réponse est ajoutée à la div. – ramanareddy438

+0

Les outils pour détecter les trous de sécurité ont tendance à être stupides. Ils détectent les problèmes potentiels. Vous devez absolument analyser leurs rapports pour voir s'il y a un problème réel et ne pas leur faire confiance aveuglément. – Quentin

Répondre

1

Tant que la JSP elle-même produit du code HTML correct, il n'y a pas de problème.

Si la réponse était du texte à la place, alors vous devriez utiliser innerText au lieu de innerHTML.

+0

Merci beaucoup @fgb pour la réponse. Oui, JSP produira la sortie HTML. Ce n'est pas un texte. C'est le HTML. Donc je dois utiliser 'innerHTML'. Mais l'outil Veracode montre cela comme un défaut de sécurité. Cela m'inquiète. – ramanareddy438