Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/295.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 具有DirectoryEntry用户名和密码的LDAP注入漏洞?_C#_Ldap_Directoryservices_Checkmarx - Fatal编程技术网

C# 具有DirectoryEntry用户名和密码的LDAP注入漏洞?

C# 具有DirectoryEntry用户名和密码的LDAP注入漏洞?,c#,ldap,directoryservices,checkmarx,C#,Ldap,Directoryservices,Checkmarx,作为身份验证过程的一部分,我们根据用户输入的用户名和密码构建System.DirectoryServices.DirectoryEntry: var de=new DirectoryEntry(ldappath fromconfig、typedUserName、typedPassword、AuthenticationTypes.ReadonlyServer | AuthenticationTypes.Secure); 但是当我们通过Checkmarx运行代码时,它声称在typedUserNam

作为身份验证过程的一部分,我们根据用户输入的用户名和密码构建
System.DirectoryServices.DirectoryEntry

var de=new DirectoryEntry(ldappath fromconfig、typedUserName、typedPassword、AuthenticationTypes.ReadonlyServer | AuthenticationTypes.Secure);

但是当我们通过Checkmarx运行代码时,它声称在
typedUserName
typedPassword
上存在“LDAP注入”漏洞,因为它们没有被清除。我不明白为什么,因为根据定义密码可以是任何东西。。。而且,显然是要接受
用户名
密码
作为第二个和第三个参数。

对于Checkmarx,您应该始终清理(验证)您使用的每个值。如果你不这么做,Checkmarx会认为这是不可信的,顺便说一句,按照Checkmarx的规则,这可能会导致一些注射。在您的情况下,这是Checkmarx的正常发现


LDAP注入和SQL注入一样都是通用的,我记得,LDAP没有类似参数化的解决方案(请参阅)

对于Checkmarx,您应该始终清理(验证)您使用的每个值。如果你不这么做,Checkmarx会认为这是不可信的,顺便说一句,按照Checkmarx的规则,这可能会导致一些注射。在您的情况下,这是Checkmarx的正常发现


LDAP注入和SQL注入一样都是通用的,我记得,LDAP没有类似参数化的解决方案(请参阅)

那么,我该怎么办?我应该逃避特殊角色吗?但是
System.DirectoryServices.DirectoryEntry
是否需要一个转义字符串,或者它是否会与密码不匹配?因为正如我所说,这不是一个可分辨名称,也不是一个过滤器字符串。构造函数被记录为需要密码,简单明了。我不确定,但我认为它不需要转义字符串。这应该与存储在LDAP树中的格式相同。因此,如果密码已转义,并且存储区已转义,那么这应该可以正常工作,我应该怎么做?我应该逃避特殊角色吗?但是
System.DirectoryServices.DirectoryEntry
是否需要一个转义字符串,或者它是否会与密码不匹配?因为正如我所说,这不是一个可分辨名称,也不是一个过滤器字符串。构造函数被记录为需要密码,简单明了。我不确定,但我认为它不需要转义字符串。这应该与存储在LDAP树中的格式相同。因此,如果密码已转义,并且存储区已转义,则应该可以使用