HTTP标头中CRLF序列的不正确中和

时间:2019-04-16 10:20:42

标签: java xss veracode

我在项目上运行了Veracode扫描,它在HTTP响应拆分下给了我CWE ID 113问题。我尝试通过那里的建议来解决该问题,但没有成功。例如

try
    {
        String selNhid = req.getParameter("selNhid");
        String redirectURL = "/nhwhoods?action=membersNH&selNhid="+selNhid;
         res.sendRedirect(req.getContextPath() + redirectURL);
    }
    catch (Exception e)
    {
        e.printStackTrace();
    }

以上代码来自文件之一。并报告在行显示错误

res.sendRedirect(req.getContextPath() + redirectURL);

任何建议,如何解决该问题?

3 个答案:

答案 0 :(得分:0)

可以使用带有以下内容的ESAPI 2.1.0.1库修复此问题:

导入org.owasp.esapi.ESAPI;

ESAPI.httpUtilities()。setHeader(response,param,value); ESAPI.httpUtilities()。addCookie(response,cookie);

答案 1 :(得分:0)

如何从重定向URL参数中删除CRLF序列,如错误消息所示?

一个简单的.replaceAll("[\\r\\n]+", "")应该可以做到。

答案 2 :(得分:0)

selNhid缺少URL编码。

String redirectURL = "/nhwhoods?action=membersNH&selNhid="
        + URLEncoder.encode(selNhid, StandardCharsets.UTF_8);

以上假设您正在使用UTF-8。现在,令人讨厌的内容将以%XX个字节的形式撤防。