checkmarx中的LDAP注入问题:

时间:2017-01-02 11:04:32

标签: checkmarx

我正在尝试使用checkmarx开发一些应用程序并扫描我的代码,并在下面的方法中解决了LDAP注入问题。

Update(request.getparameter("userID"))

我们正在调用此方法并使用request.getparameter()来获取相应的值,checkmarx在request.getparameter(“userID”)中显示问题,

问题说明 “然后,此元素的值会在没有经过适当清理或验证的情况下流经代码,并最终在方法中的LDAP查询中使用”

以下是我尝试过的方法之一

String userID = request.getparameter("userID");
if(userID == null && userID.isEmpty){
    throw new ServletException(); 
}
else
    Update(userID);

如果上述更改也未解决问题。

有什么想法解决这个问题吗?

1 个答案:

答案 0 :(得分:2)

似乎Checkmarx在将您的代码标记为易受LDAP注入攻击时是正确的。

什么是LDAP注入?

  

LDAP查询中使用的特殊元素的中和不当('LDAP注入')

     

该软件使用来自上游组件的外部影响输入构建全部或部分LDAP查询,但它不会中和或错误地中和可能在将其发送到下游组件时修改预期LDAP查询的特殊元素。 / p>

引自CWE-90: Improper Neutralization of Special Elements used in an LDAP Query ('LDAP Injection')

如何缓解?

  

防止LDAP注入需要准确的编码和安全的服务器配置。   前端应用程序应执行输入验证并限制所有潜在的恶意符号。开发人员可以使用正则表达式来验证不受信任的输入。以下正则表达式可以通过仅允许数字和字母来限制潜在攻击的范围:

/[^0-9a-z]/i
  

执行传出数据的过滤,作为额外的安全级别。   不要输出与应用程序无关的信息   功能。对数据内的数据实施正确的访问控制   LDAP目录,为用户对象设置适当的权限   禁用对目录对象的匿名访问。

来自LDAP Injection Vulnerability | CWE-90 Weakness | Exploitation and Remediation

的引用和示例