Checkmarx,LDAP注入和ESAPI.encodeForLDAP

问题描述:

本声明由Checkmarx正确标记为尽可能LDAP_Injection。Checkmarx,LDAP注入和ESAPI.encodeForLDAP

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

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

感谢 托马斯

您可以覆盖用作查询消毒剂的功能,使用CxAudit。
例如具有Find_LDAP_Sanitize()的项目/公司重写,并且包括(除原始数据外)ESAPI函数 - 选择方法调用并将其添加到原始列表中。

P.S.已经要求将其添加到默认值中,但我不知道它何时会发生:-)

P.P.S. OWASP ESAPI几乎被OWASP Encoder项目所取代,但它并不真正支持LDAP编码。
长期来看,您可能需要重构代码以避免任何类型的并置。