4
    String id = request.getParameter("id") != null ? request.getParameter("id") : "0";
            aaaa doc = bbb.getdetailsById(id);    
            byte b[] = doc.getUploaded();        
            try {
                response.setContentType("APPLICATION/OCTET-STREAM");
                String disHeader = "Attachment;Filename=" + doc.getName();
                response.setHeader("Content-Disposition", disHeader);
                servletoutputstream = response.getOutputStream();
                servletoutputstream.write(b, 0, b.length);
}

我有这段代码。代码审计工具说 servletoutputstream.write(b, 0, b.length); 是 xss 脆弱的。但我不知道它是如何报告相同的。以及如何解决它。我正在使用 ESAPI 来验证输入并在其他 xss 易受攻击的报告问题中转义输出。我也需要对这些做同样的事情吗?请提出建议或解决方案。在做了一些研究工作后,我发现字节 b[] 需要使用 ESAPI 为 htmlESCAPE 或 xmlESCAPE 转义。它会解决问题吗?

4

3 回答 3

1

例如,使用 ESAPI 验证输入“id”。使用 ESAPI 验证文件下载注入的文件名。还使用 ESapi 使用 getVALidatedFileContent() 验证字节 b[]。

这是一个 STORED XSS VULNERABILITY ISSUE 的案例。

于 2012-06-29T09:58:50.063 回答
1

如果getUploaded()返回一些由黑客上传的 javascript 代码,<script>alert('hi')</script>那么这可能会产生问题。

Spring您可以尝试以下解决方案来格式化框架附带的字符串。

HtmlUtils.htmlEscape("<script> alter(''hi)</script>")

输出:

&lt;script&gt; alter(''hi)&lt;/script&gt

您还可以使用 JSTL 库来格式化包含javascript.

public static byte[] getFormatedString(byte[] string){

    String str=new String(string);
    str=HtmlUtils.htmlEscape(str);
    return str.getBytes();

}

您的代码:

String id = request.getParameter("id") != null ? request.getParameter("id") : "0";
    aaaa doc = bbb.getdetailsById(id);    
    byte b[] = doc.getUploaded();        
    try {
        response.setContentType("APPLICATION/OCTET-STREAM");
        String disHeader = "Attachment;Filename=" + doc.getName();
        response.setHeader("Content-Disposition", disHeader);
        servletoutputstream = response.getOutputStream();
        servletoutputstream.write(getFormatedString(b), 0, b.length);
于 2012-06-19T07:36:00.753 回答
0

如果您使用 Spring MVC,则有一个功能可用于此目的,启用如下:

<context-param>
    <param-name>defaultHtmlEscape</param-name>
    <param-value>true</param-value>
</context-param>

这是线索

第二条线索

于 2012-06-19T07:21:45.860 回答