当前位置: 首页 > 知识库问答 >
问题:

JAVA中邮件地址中CRLF序列(“CRLF注入”)的不正确中和

傅俊德
2023-03-14

代码

    InternetAddress[] myAdrs = getAdrs(message.getToAddresses());
    for (int i = 0; i < myAdrs.length; i++) {
        String s = myAdrs[i].getAddress();
        s = s.replace("\r","").replace("\n","").replace("%0A","").replace("%0a","").replace("%0D","").replace("%0d","");
        InternetAddress adr = new InternetAddress( s, false );
        // --> Improper Neutralization of CRLF Sequences ('CRLF Injection') (CWE ID 93)
        lMessage.addRecipient(Message.RecipientType.TO, adr);
    }

尽管我用s=s.replace删除了s中任何不需要的字符串,但仍然给了我CWE ID 93。在示例中,我发现了一个web,s=s.replace应该是解决方案,但我仍然有这个缺陷?我错过了什么?任何提示都将不胜感激!

共有1个答案

商风华
2023-03-14

当Veracode不接受手工解决方案时,我遇到了这样的情况,例如使用StringEscape eUtils和简单的替换方法。尝试ESAPI库。Veracode通常接受ESAPI作为可信工具来击败漏洞。例如:

//need to handle ValidationException
String s = ESAPI.validator().getValidInput("User Email", myAdrs[i].getAddress(), "Email", 255, true);
InternetAddress adr = new InternetAddress( s, false );

并将正则表达式用于测试您的电子邮件以进行验证。属性(或您在ESAPI中指定的其他文件。属性文件为验证程序。配置文件=验证。属性文件为验证)。电子邮件属性。例如:

Validator.Email=^[A-Za-z0-9._%'-]+@[A-Za-z0-9.-]+\\.[a-zA-Z]{2,6}$
 类似资料:
  • 我一直在研究一个veracode缺陷,我相信它已经被修复,因为我们已经在做编码了。forJava。但它仍被视为一个缺陷进行扫描。如果我错过了什么,有人能帮我吗?以下是代码片段: 非常感谢你的帮助。

  • 在Veracode报告中,我在一些java文件中发现了错误CWE 93。在静态扫描的情况下,一些代码是 2. 我怎么解决? 提前感谢

  • 我在我的项目上运行了Veracode扫描,它在HTTP响应拆分下给了我CWE ID 113问题。我试图用这些建议来解决这个问题,但没有成功。例如 上面的代码来自其中一个文件。并报告显示行错误 有什么建议,如何解决这个问题?

  • 任何人都知道如何解决这个veracode问题(CWE 113) 我已经尝试了下面的链接,但它不工作。 修复CWE-113:HTTP标头中CRLF序列的不正确中和(“HTTP响应拆分”) 下面是我遇到问题的函数。

  • CRLF 注入是一类漏洞,在用户设法向应用插入 CRLF 时出现。在多种互联网协议中,包括 HTML,CRLF 字符表示了行的末尾,通常表示为\r\n,编码后是%0D%0A。在和 HTTP 请求或响应头组合时,这可以用于表示一行的结束,并且可能导致不同的漏洞,包括 HTTP 请求走私和 HTTP 响应分割。 对 HTTP 请求走私而言,它通常在 HTTP 请求传给服务器,服务器处理它并传给另一个服

  • R之后 描述-函数调用包含HTTP响应分割漏洞。将未经初始化的用户提供的输入写入HTTP标头允许攻击者操纵浏览器呈现的HTTP响应,从而导致缓存中毒和跨站点脚本攻击。