0

我在 Veracode 平台上对我的代码进行了 SAST 扫描,我在 Java 邮件功能中发现了这个漏洞,我用它来从我的应用程序发送邮件。以下是即将出现的漏洞 - CRLF 序列的不正确中和('CRLF Injection')(CWE ID 93)。

message.setSubject(subjectOfEmail);

我听说我们可以使用 ESAPI 库,但我找不到合适的验证函数。有人请帮我重新解决这个问题,这样它就不会再次出现在扫描中。

4

3 回答 3

1

查看 Veracode 帮助中心上的此页面,该页面列出了将修复某些缺陷类的验证库:

https://help.veracode.com/reader/DGHxSJy3Gn3gtuSIN2jkRQ/y52kZojXR27Y8XY51KtvvA

有大量的 ESAPI 库可以修复 CWSE 93 缺陷,包括

org.owasp.esapi.Encoder.encodeForHTML
于 2019-07-02T17:53:30.703 回答
0

如果在这种情况下您要防止的只是标头注入问题(与 CWE ID 93 相关),请查看 ESAPI 的org.owasp.esapi.StringUtilities类。特别是静态方法stripControls()可能正是您所需要的。由于它假定 HTML 上下文,因此usingEncoder.encodeForHTML()可能会编码超出您想要的内容。(当然,如果您担心在某些 Web 电子邮件客户端的主题标头上防止 XSS两次,但渲染不正确。)

请记住,如果您使用StringUtilities.stripControls(),您的 Veracode 的 SAST 引擎可能仍会为 CWE 标记您的代码,因为我不确定它是否会将该类的方法识别为在这种特殊情况下删除污染标志。(但您始终可以将其作为缓解评论提及。)

于 2019-07-06T01:51:43.720 回答
0

使用 ESAPI 的 decodeForHTML() 方法,如下例所示。

ESAPI.encoder().decodeForHTML(subjectOfEmail)

于 2019-07-10T05:09:10.463 回答