有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java如何中和HTTP头中的CRLF序列

我已经浏览了这个链接。 [How to fix "Improper Neutralization of CRLF Sequences in HTTP Headers ('HTTP Response Splitting')"

但它并没有给我答案

我的代码也给出了错误“HTTP头中CRLF序列的不正确中和('HTTP响应拆分')CWE ID 113”

我的代码片段是:

Cookie newloginCookie = new Cookie("CMCLoginCookie", userName + ":" + password);
                                newloginCookie.setMaxAge(24 * 60 * 60 * 1000);
                                response.addCookie(newloginCookie);

在veracode扫描中,最后一行出现错误。不知道该怎么办


共 (2) 个答案

  1. # 1 楼答案

    通过使用ESAPI,您可以解决最大的CWE问题

    基本上,上述问题是需要使用正则表达式或DefaultHTTPUtilities从用户输入中删除\r\n值

  2. # 2 楼答案

    获得用户名和密码后,请尝试将其从所有“\r”和“\n”字符中删除。使用Apache StringUtils之类的工具,这将是这样的:

    String safeUserName = StringUtils.replaceEach(userName, new String[] {"\n", "\r"}, new String[] {"", ""});
    String safePassword = StringUtils.replaceEach(password, new String[] {"\n", "\r"}, new String[] {"", ""});
    

    然后使用安全字符串创建cookie