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

如何在Java中使用org.owasp.encoder.编码?

秋煌
2023-03-14
public static void sendEmail(String to, String cc, String subject, String content) throws IOException {
    LOG.info(ESAPIValidation.sanitizeParam((String.format("EmailUtil.sendEMail() \n To: %s\n Subjet: %s \n  Content: %s", to, subject, content))));
    String host = ApplicationUtil.getProperty(ApplicationConstants.AL_WS_MAIL_HOST);
    String port = ApplicationUtil.getProperty(ApplicationConstants.AL_WS_MAIL_PORT);
    String from = ApplicationUtil.getProperty(ApplicationConstants.AL_WS_MAIL_FROM);
    String defaultToAdd = ApplicationUtil.getProperty(ApplicationConstants.AL_WS_DEFAULT_MAIL);
    String emailSystemPrefix = ApplicationUtil.getProperty(ApplicationConstants.EMAIL_PREFIX);

    if (StringUtil.isNullOrEmpty(emailSystemPrefix)) {
        emailSystemPrefix = "";
    } else {
        emailSystemPrefix =  emailSystemPrefix  + " - "; 
    }

    Properties properties = System.getProperties();
    properties.setProperty("mail.smtp.host", host);
    properties.setProperty("mail.smtp.port", port);
    Session session = Session.getDefaultInstance(properties);

    try {
        MimeMessage message = new MimeMessage(session);
        message.setFrom(new InternetAddress(from));

        addToList(message, to);
        
        addCCList(message, cc);
        if(cc == null || (cc != null && !cc.equals(defaultToAdd)))
        addCCList(message, defaultToAdd);

        content = addFooter(content);
        message.setSubject(emailSystemPrefix + subject);
        message.setContent(content.replace("textarea", "div"), "text/html; charset=utf-8");
        Transport.send(message);

    } catch (AddressException addressException) {
        LOG.warn("EmailUtil.triggerDBFailureMail() AddressException ", addressException);
    } catch (MessagingException messageException) {
        LOG.warn("EmailUtil.triggerDBFailureMail() MessagingException ", messageException);
    }
}

在这段代码中,我遇到了Veracode问题:

CRLF序列的不当中和(“CRLF注入”)(CWE ID 93)

message.setSubject(emailSystemPrefix + subject);

我正在尝试使用 org.owasp.encoder.Encode 来解决这个问题,但我不知道 Encode 类的用法。任何人都可以简要介绍Encode类的实现,在哪里使用,用它解决了什么?

共有1个答案

仉宸
2023-03-14

您可以在文档中阅读有关Encode类的信息

Encode -- 用于上下文编码的流畅接口。

每个上下文编码方法有两个版本。第一个版本接受String参数并将编码版本作为String返回。第二个版本将编码版本直接写入Writer。

请确保阅读并理解该方法编码的上下文。为不正确的上下文编码可能会导致暴露跨站点脚本漏洞。

和CRLF注入

术语 CRLF 是指回车 (ASCII 13, \r) 换行 (ASCII 10, \n)。它们用于记录行的终止,但是,在当今流行的操作系统中处理方式不同。例如:在Windows中,CR和LF都需要注意行尾,而在Linux/UNIX中,只需要LF。在HTTP协议中,CR-LF序列始终用于终止线路。

当用户设法将CRLF提交到应用程序中时,就会发生CRLF注入攻击。这通常通过修改HTTP参数或URL来实现。

 类似资料:
  • 这些天我都在使用CUDAC来访问GPU。但现在我的向导让我用Java和GPU工作。所以我在网上搜索,发现Rootbeer是最好的选择,但我不知道如何运行一个程序使用‘Rootbeer’。谁能告诉我使用根啤酒的步骤。

  • 问题内容: 我到处都是,但是似乎找不到任何易于理解的解释。(我发现其他Java用户编写的类和方法可以做到这一点,但我希望自己编写。) 问题答案: 这是GIFanim的方法。也许那会给您一个开始。 请注意,这是一个非常幼稚的实现,所生成的图像要比使用压缩调色板并执行其他优化的库所生成的图像大得多。实现这样的库将是一项重要的任务。

  • 问题内容: 我目前在我的项目中使用类型,并且遇到问题。 上面的代码中的可以是或。这是类型的原因。 我知道不是。 我需要知道的是如何使它工作。 问题答案: 可编码需要知道要转换的类型。 首先,我将尝试解决不知道类型的问题,看看是否可以解决它并使它更简单。 否则,我目前认为解决您的问题的唯一方法就是使用如下所示的泛型。

  • 问题内容: 我想对英语句子加标签,并进行一些处理。我想使用openNLP。我已经安装了 当我执行命令时 它提供输出POSTagging Text.txt中的输入 我希望它安装正确吗? 现在如何从Java应用程序内部进行此POStagging?我已将openNLPtools,jwnl,maxent jar添加到项目中,但是如何调用POStagging? 问题答案: 这是我放在一起的一些(旧)示例代码

  • 问题内容: 我正在尝试使用Java中的HtmlUnit登录网站。首先,我输入用户名,然后输入密码。之后,我需要从下拉框中选择一个选项。输入用户名和密码似乎有效,但是当我尝试从下拉框中选择项目时出现错误。谁能帮我解决这个问题?我的代码如下: 问题答案: 这是HTMLunit的单元测试中的代码。 请注意,他们使用的是getSelectsByName而不是getElementById。 这是这些单元测试

  • 问题内容: 使用Java工具, 我可以使用WSDL生成打SOAP Web服务所需的存根和类。 但是我不知道如何在REST中做同样的事情。如何获得击中REST Web服务所需的Java类。无论如何,要使用该服务的方式是什么? 谁能给我指路? 问题答案: 工作示例,请尝试以下操作: