0

我正在根据代码审计报告修复代码。它针对具有语法的行显示“防止敏感数据的暴露” 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());

我再次不知道如何解决这个问题。问题是该工具报告的敏感数据泄漏相同。

4

2 回答 2

0

正如我在评论中所说,我不认为评论与代码本身有关,而是与敏感数据的公开有关。我已经阅读了 PCI-DSS 文档,但我不记得它说什么应该如何编码(不管是好的做法)。您可以查看自己提供的所有PCI 文档。这是一项艰巨的任务,更好的方法是尝试找出顾问的意思。

当您不知道问题出在哪里时,很难解决问题。

于 2012-06-18T14:32:01.573 回答
0

content.toString() 需要正确验证。使用 ESAPI 严格验证。直接写入响应确实很脆弱,如果数据是从具有请求作为输入的方法输出的,那么它会两次受到攻击。重大安全问题。

于 2012-06-29T09:52:48.680 回答