gpt4 book ai didi

java - 使用 checkmarx 时 Servletoutputstream.write 存在 XSS 漏洞

转载 作者:行者123 更新时间:2023-11-30 06:24:15 24 4
gpt4 key购买 nike

借助以下代码片段,我能够使用 JasperReports 以所需的输出格式生成 PDF。

Map<String, Object> parameters = new HashMap<>();
parameters.put("code", HtmlUtils.htmlEscape(request.getParameter("code")));
JasperPrint jasperPrint = JasperFillManager.fillReport(path, parameters, dataSource);
barcodePdfBytes = JasperExportManager.exportReportToPdf(jasperPrint);

但是,当我使用 checkmarx 扫描代码时,它显示了以下代码片段的反射 XSS 漏洞,为了解决此问题,我已使用转义了所有输入参数HtmlUtils.htmlEscape 但仍然面临同样的问题。

ServletOutputStream outputStream = response.getOutputStream();    
outputStream.write(barcodePdfBytes, 0, barcodePdfBytes.length);

我从头开始进一步分析,并尝试清理整个 byte[],但它以某种方式损坏了 PDF 格式,并且用户没有得到 pdf 响应。

在这里寻求一些帮助。希望得到任何指点。提前致谢。

最佳答案

如果您将 PDF 文件写入流,则不应对数据进行任何 HTML 编码,因为它不是 HTML 文件。使用 application/pdf 内容类型 header 将 PDF 按原样写入输出流。

Checkmarx 可能看不到您正在编写 PDF 文件,因此可能会给出错误报告。

关于java - 使用 checkmarx 时 Servletoutputstream.write 存在 XSS 漏洞,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47518900/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com