ESAPI für XSS-Prävention funktioniert nicht

Ich arbeite an der Behebung von Cross Site Scripting-Problemen in unserem Code, hauptsächlich in JSPS.

Below ist der Originalcode

 //scriplet code
    <% String userId = request.getParameter("sid"); 
    ...%>

und in der gleichen Jsp haben sie

     <input type = hidden name = "userID" value = "<%= userId %>" />

Ich habe Änderungen vorgenommen, um esapi-2.1.0.jar in lib und ESAPI.properties sowie validation.properties in classpath aufzunehmen. Nehmen Sie anschließend die folgenden Änderungen am Scriplet-Code vor, um den obigen Code zu korrigieren:

      //scriplet code
    <% String userId = ESAPI.encoder().encodeForHTML(request.getParameter("sid")); 
    ...%>

Ich dachte, dies würde das Problem beheben, aber wenn ich meinen Code mit Fortify scanne, werden diese Zeilen erneut als XSS-Problem hervorgehoben. Bitte helfen Sie, wenn Sie eine Idee haben, wie damit umgegangen werden soll. Vielen Dank

------- UPDATE

Vielen Dank @avgvstvs. Dies ist sehr aufschlussreich. Befolgen Sie die Richtlinien. Sie sind sich nicht sicher, ob ich etwas vermisse. Code -

          String              userSID=ESAPI.encoder().encodeForHTMLAttribute(request.getHeader("janus_sid")); session.setAttribute("username",userSID);<input type=hidden name="USERNAME" value="<%= userSID %>"

Und für ein anderes Varibale-Debug ist unten die Verwendung von

       String debugFlag =  ESAPI.encoder().encodeForJavaScript(request.getParameter("debug"));var debugFlag = "<%= debugFlag%>";if(debugFlag == "y"){       
        document.title=   title + " (" + host + ")";
        defaultAppTitle = title + " (" + host +  ")";           
    }                                                           

er Scan von @Latest Fortify listet sie weiterhin als Schwachstellen auf: -

Antworten auf die Frage(4)

Ihre Antwort auf die Frage