0

该声明被 Checkmarx 正确地标记为可能的 LDAP_Injection。

String filter = "(&(objectclass=accessGroup)(member=cn=*)(dsApplicationName=" + application + "))";

使用 ESAPI 编码器,我希望这可以解决问题:

String saneApplication = org.owasp.esapi.reference.DefaultEncoder.getInstance().encodeForLDAP(application);
String filter = "(&(objectclass=accessGroup)(member=cn=*)(dsApplicationName=" + saneApplication + "))";

但 Checkmarx 仍将其标记为LDAP_Injection.

不知道如何正确解决这个问题。

谢谢托马斯

4

1 回答 1

2

您可以使用 CxAudit 覆盖在查询中用作消毒剂的函数。
例如,对 Find_LDAP_Sanitize() 有一个项目/公司覆盖,并包括(除了原始的)ESAPI 函数 - 选择方法调用,并将它们添加到原始列表中。

PS 已经要求将其添加到默认值中,但我不知道什么时候会:-)

PPS OWASP ESAPI 几乎被 OWASP Encoder 项目所取代,但是它并不真正支持 LDAP 编码。
从长远来看,您可能希望重组代码以避免任何类型的连接。

于 2017-10-19T14:33:34.177 回答