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: -