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编码。
长期来看,您可能需要重构代码以避免任何类型的并置。