我在Veracode平台上对我的代码进行了SAST扫描,并在Java邮件功能中发现了此漏洞,该漏洞用于从应用程序发送邮件。以下是即将出现的漏洞-CRLF序列的不正确中和('CRLF注入')(CWE ID 93)。
message.setSubject(subjectOfEmail);
我听说我们可以使用ESAPI库,但是我找不到适合的验证函数。有人请帮助我修复此问题,以免再次出现在扫描中。
答案 0 :(得分:1)
在Veracode帮助中心上查看此页面,该页面列出了将修复某些缺陷类的验证库:
https://help.veracode.com/reader/DGHxSJy3Gn3gtuSIN2jkRQ/y52kZojXR27Y8XY51KtvvA
有一整套ESAPI库将修复CWSE 93缺陷,包括
org.owasp.esapi.Encoder.encodeForHTML
答案 1 :(得分:0)
如果在这种情况下要防止出现的只是标头注入问题(与CWE ID 93相关),请查看ESAPI的 org.owasp.esapi.StringUtilities 类。特别是静态方法stripControls()
可能正是您所需要的。使用Encoder.encodeForHTML()
可能会编码超出您想要的内容,因为它假定了HTML上下文。 (当然,您可能希望,如果您担心在某些Web电子邮件客户端的Subject标头上阻止XSS。通常,这些客户端应该已经内置了这种保护,因此,如果您对其进行编码,则最终可能会被编码。两次,并且渲染不正确。)
请记住,如果您使用StringUtilities.stripControls()
,则Veracode的SAST引擎可能仍会为CWE标记您的代码,尽管我不确定它是否可以识别该类的方法来删除此标记中的污点标志。案件。 (但您始终可以将其作为缓解措施的评论来提及。)
答案 2 :(得分:0)
像下面的示例一样使用ESAPI的decodeForHTML()方法。
ESAPI.encoder()。decodeForHTML(subjectOfEmail)