ESAPI для предотвращения XSS не работает
Я работаю над устранением проблем межсайтового скриптинга в нашем коде в основном в JSPS.
Ниже приведен оригинальный код
//scriplet code
<% String userId = request.getParameter("sid");
...%>
и в том же JSP у них есть
<input type = hidden name = "userID" value = "<%= userId %>" />
Я внес изменения, чтобы включить esapi-2.1.0.jar в lib и ESAPI.properties, validation.properties в classpath. Затем внесены следующие изменения в код сценария, чтобы исправить вышеуказанный код.
//scriplet code
<% String userId = ESAPI.encoder().encodeForHTML(request.getParameter("sid"));
...%>
Я думал, что это решит проблему, но когда я сканирую свой код с помощью Fortify, эти строки снова подсвечиваются как имеющие проблему XSS. Пожалуйста, помогите, если вы, ребята, знаете, как с этим обращаться. Благодарю.
------- ОБНОВИТЬ
Большое спасибо @avgvstvs. Это очень проницательно. Следующие рекомендации. Не уверен, что я что-то упустил. Код -
String userSID=ESAPI.encoder().encodeForHTMLAttribute(request.getHeader("janus_sid")); session.setAttribute("username",userSID);<input type=hidden name="USERNAME" value="<%= userSID %>"
И для другой отладки varibale ниже использование
String debugFlag = ESAPI.encoder().encodeForJavaScript(request.getParameter("debug"));var debugFlag = "<%= debugFlag%>";if(debugFlag == "y"){
document.title= title + " (" + host + ")";
defaultAppTitle = title + " (" + host + ")";
}
Последнее сканирование Fortify по-прежнему перечисляет их как уязвимости :-(