【发布时间】:2012-06-18 04:40:09
【问题描述】:
我正在根据代码审计报告修复代码。它针对语法为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());
我再次不知道如何解决这个问题。问题是该工具报告了相同的敏感数据泄漏。
【问题讨论】:
-
我认为问题不在于 StringBuffer,而在于您所公开的信息。 “desc”中是否有任何敏感信息,例如信用卡号或 CVV 代码?
-
no desc 没有任何敏感数据。它仅由审核工具报告,我只需要针对该问题提供修复。
-
你为什么不直接问审计员他们的意思?
-
亲爱的,我正在做一个客户项目。客户已经完成了代码审计,并向我们提供了针对不同审计标准的问题和消息的报告,我需要修复它们,这就是我能说的。如果您知道解决方案,请告诉。谢谢
标签: java stringbuffer