我正在根据代码审计报告修复代码。它针对具有语法的行显示“防止敏感数据的暴露”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());
我再次不知道如何解决这个问题。问题与该工具报告的敏感数据泄露相同。
正如我在评论中所说,我不认为该评论与代码本身有关,而是与敏感数据的暴露有关。我已阅读 PCI-DSS 文档,但我不记得它有任何关于应如何编码的内容(无论良好实践如何)。大家可以看一下PCI 文档 https://www.pcisecuritystandards.org/security_standards/documents.php可以自己使用。这是一项艰巨的任务,更好的方法是尝试找出顾问的意思。
当你不知道问题出在哪里时,真的很难解决问题。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)