我正在根据代码审计报告修复代码。它针对具有语法的行显示“防止敏感数据的暴露” response.getWriter().write(xml.toString())
。整个代码如下。
String alertId = request.getParameter("alertId") != null ? request.getParameter("alertId") : "";
String desc=AAAA.getBBBB(Long.parseLong(AAAA.getCCCC(alertId)));
StringBuffer xml = new StringBuffer();
xml.append("<?xml version=\"1.0\"?>");
xml.append("<parent>");
xml.append("<child>");
xml.append("<alertDesc>");
xml.append(desc);
xml.append("</alertDesc>");
xml.append("</child>");
xml.append("</parent>");
response.getWriter().write(xml.toString()); // ISSUE IN THIS LINE
response.setContentType("text/xml");
response.setHeader("Cache-Control", "no-cache");
我已经完成了足够的家庭工作,可以针对 XSS 攻击修复它,并使用 ESAPI 进行相同的处理。但不知道如何解决这个问题。请提出建议报告针对报告的问题有以下消息。“通过网页泄漏 toString() 结果(“xml”)”
经过一天的研发,我发现 sax 解析器可以在这种情况下帮助我。它实际上是 StringBuffer.toString() 语法的内存泄漏,由于敏感数据被暴露和丢失。但我不知道如何实现。在某些地方,我发现使用 StringBuilder() 类而不是 StringBuffer() 类。任何人都可以帮助我或提出宝贵的建议。提前致谢。
对于另一种类型的代码,我也有同样的问题。它在下面。
StringBuffer content = (StringBuffer)file.get("content");
response.setContentLength((int)content.length());
response.getWriter().write(content.toString());
我再次不知道如何解决这个问题。问题是该工具报告的敏感数据泄漏相同。