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

我在我的项目上运行了 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);

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


繁星coding
浏览 109回答 3
3回答

慕慕森

selNhid 缺少 URL 编码。String redirectURL = "/nhwhoods?action=membersNH&selNhid="         + URLEncoder.encode(selNhid, StandardCharsets.UTF_8);以上假设您正在使用 UTF-8。现在讨厌的内容将被解除为 %XX 字节。

扬帆大鱼

这可以使用 ESAPI 2.1.0.1 库修复:import org.owasp.esapi.ESAPI;ESAPI.httpUtilities().setHeader(response, param, value);ESAPI.httpUtilities().addCookie(response, cookie);

慕斯709654

就像错误消息所暗示的那样,从 redirectURL 参数中删除 CRLF 序列怎么样?一个简单的.replaceAll("[\\r\\n]+", "")应该做到这一点。
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Java