#java #xss #esapi
Вопрос:
Veracode сообщает, что мое приложение подвергается риску XXS при записи потока файлов в выходной поток. Я пытаюсь использовать ESAPI для решения этой проблемы, но по-прежнему сообщается о той же проблеме. Что я должен для этого сделать?
public static int copyStream(InputStream in, OutputStream out, int buffer)
throws IOException {
byte buf[] = new byte[buffer];
int len;
int ttl = 0;
while ((len = in.read(buf)) != -1) {
try {
buf = ESAPI.validator().getValidFileContent(IOUtil.class.getName(), buf, 50000000, false);
out.write(buf, 0, len);
ttl = len;
} catch (IntrusionException e) {
e.printStackTrace();
} catch (ValidationException e) {
e.printStackTrace();
}
}
out.flush();
in.close();
out.close();
return ttl;
}
Ответ №1:
Если этот валидатор совпадает с валидатором по умолчанию, то он проверяет только размер файла. Но он проверяет размер буфера, а не файла, так что, вероятно, ничего не сделает.
При отправке файла в браузер, если тип содержимого не является типом html, то никаких проблем с XSS не возникнет. Если вы установите для типа содержимого application/octet-stream
значение, он будет загружен без каких-либо действий.