【发布时间】:2020-12-22 06:23:39
【问题描述】:
以下是我现有的 Java 基本标准代码,如您所见,我只是使用输出流下载文件。
我只使用请求参数从标头中获取浏览器详细信息以生成文件名,然后我再次对其进行解码。
所以现在我不明白下面的代码是怎么回事
outputStream.write(data, 0, read);
会导致 XSS 问题吗?
那么,由于我的输出是一个简单的文件,我该如何解决这个问题?
OutputStream outputStream = httpResponse.getOutputStream();
InputStream fileInputStream = generateInputStreamObj(user, attachmentObj, false, httpRequest, servletContext, ipAddress);
String userAgent = httpRequest.getHeader("User-Agent");
String encodedFileName = generateFileName(userAgent, attachmentObj);
int downloadBufferSize = Integer.parseInt(CacheManagement.getInstance().getSystemPropertyByAlias().get("DOWNLOAD_BUFFER_SIZE").getPropertyValue());
httpResponse.setContentType("application/x-download");
httpResponse.setHeader("Content-Length", String.valueOf(attachmentObj.getDocumentSize()));
httpResponse.setHeader("Content-Disposition", "attachment; filename=\"" + encodedFileName + "\"");
httpResponse.setBufferSize(downloadBufferSize);
bufferInputStream = new BufferedInputStream(fileInputStream);
byte[] data = new byte[downloadBufferSize];
int readed = 0;
while ((readed = bufferInputStream.read(data)) != -1)
{
outputStream.write(data, 0, readed);
}
我检查了堆栈溢出和 Veracode 答案,但它对我没有帮助。
** 如果您将此问题置于减号状态,请发表评论。我查看了 stackoverflow 和 veracode 社区的答案,但它没有回答我的问题。
【问题讨论】:
标签: java xss outputstream veracode