La prevención de ESAPI para XSS no funciona
Estoy trabajando para solucionar problemas de secuencias de comandos de sitios cruzados en nuestro código, principalmente en JSPS.
Debajo está el código original
//scriplet code
<% String userId = request.getParameter("sid");
...%>
y en el mismo Jsp tienen
<input type = hidden name = "userID" value = "<%= userId %>" />
He realizado cambios para incluir esapi-2.1.0.jar en lib y ESAPI.properties, validation.properties en classpath. Luego realizó los siguientes cambios en el código de scriplet para corregir el código anterior
//scriplet code
<% String userId = ESAPI.encoder().encodeForHTML(request.getParameter("sid"));
...%>
Pensé que esto solucionaría el problema, pero cuando escaneo mi código usando Fortify, estas líneas se resaltan nuevamente como teniendo un problema XSS. Ayúdenos si tienen alguna idea de cómo se debe manejar esto. Gracias.
------- ACTUALIZACIÓN
Muchas gracias @avgvstvs. Esto es muy perspicaz. Directrices de Follwd, No estoy seguro si me estoy perdiendo algo. Código -
String userSID=ESAPI.encoder().encodeForHTMLAttribute(request.getHeader("janus_sid")); session.setAttribute("username",userSID);<input type=hidden name="USERNAME" value="<%= userSID %>"
Y para otra depuración varibale, a continuación se muestra el uso
String debugFlag = ESAPI.encoder().encodeForJavaScript(request.getParameter("debug"));var debugFlag = "<%= debugFlag%>";if(debugFlag == "y"){
document.title= title + " (" + host + ")";
defaultAppTitle = title + " (" + host + ")";
}
El último análisis de Fortify todavía los enumera como vulnerabilidades :-(