При сканировании файла появляется следующая проблема безопасности:
«Использование« испорченных данных »« значение »в контексте, который часто считается заслуживающим доверия, поскольку доверенные данные не могут быть проверены или очищеныэти данные могут быть ошибочно использованы небезопасным образом. "
Я попытался исправить тремя способами, как показано ниже, но безуспешно, поскольку проблема безопасности все еще отображается в той же строке после повторного сканирования файла.
1) String value = request.getParameter(key);
if(value.matches("[0-9a-zA-Z_]+"){
if (key.startsWith("BOOKMARK"))
book.put(key, value);
else
session.setAttribute(key, value);
}
2) String value = request.getParameter(key);
ESAPI.validator().getValidInput("Value", value, "valuePattern", 100, false);
if (key.startsWith("BOOKMARK"))
book.put(key, value);
else
session.setAttribute(key, value);
}
3)String value = request.getParameter(key);
if (session.getAttribute(key) != null) {
if (key.startsWith("BOOKMARK"))
book.put(key, value);
else
session.setAttribute(key, value);
}
Ниже приведен фрагмент кода и проблема безопасности в этой строке.
session.setAttribute (ключ, значение);
private Bookmark cacheRequest(HttpServletRequest request) {
String key;
Bookmark book = new Bookmark();
HttpSession session = request.getSession();
Enumeration enumVar = request.getParameterNames();
System.out.println("after enumVar creation");
try {
while (enumVar.hasMoreElements()) {
key = (String) enumVar.nextElement();
String value = request.getParameter(key);
if (key.startsWith("BOOKMARK"))
book.put(key, value);
else
session.setAttribute(key, value); //flaw
}
} catch (java.lang.NegativeArraySizeException value) {
}
return book;
}
Я не ожидал "испорченного" значения, которое приходит из запроса Http в этой строке
session.setAttribute(key, value);