Csharp/C#教程:如何在C#中转义字符串,以便在LDAP查询中使用分享


如何在C#中转义字符串,以便在LDAP查询中使用

我有一个LDAP查询,我用它来在C#中执行搜索。 它使用两个字符串变量(用户名和域),出于安全原因需要对其进行转义。

我该怎么逃避弦乐? C#.NET中是否有可用的function来执行此操作?


示例LDAP搜索条件:

(objectCategory=person) (userprincipalname=username@domain*) (samaccountname=username) 

C#中的LDAP查询字符串示例:

 string search = "(&(&(objectCategory=person)(userprincipalname=" + username + "@" + domain + "*)(samaccountname=" + username + ")))"; 

编辑:我已经有LDAP查询工作,并返回结果。 我想要的只是逃避参数。

以下是我从Sophia提到的Java代码到C#的翻译。

 ///  /// Escapes the LDAP search filter to prevent LDAP injection attacks. ///  /// The search filter. ///  ///  /// The escaped search filter. private static string EscapeLdapSearchFilter(string searchFilter) { StringBuilder escape = new StringBuilder(); // If using JDK >= 1.5 consider using StringBuilder for (int i = 0; i < searchFilter.Length; ++i) { char current = searchFilter[i]; switch (current) { case '\': escape.Append(@"5c"); break; case '*': escape.Append(@"2a"); break; case '(': escape.Append(@"28"); break; case ')': escape.Append(@"29"); break; case 'u0000': escape.Append(@"0"); break; case '/': escape.Append(@"2f"); break; default: escape.Append(current); break; } } return escape.ToString(); } 

我在一篇关于LDAP注入的博客文章中找到了解决方案

这个解决方案涉及添加自己的函数来逃避用户名和域名,他的解决方案是Java,但想法就在那里。

MSDN还列出了转义序列需要替换哪些特殊字符。

据我所知,似乎没有任何方法可以在System.DirectoryServices中转义LDAP字符串(就像HttpServerUtility中的URL等)

使用地址: https ://www.nuget.org/packages/AntiXss中的AntiXss库

 string encoded = Microsoft.Security.Application.Encoder.LdapFilterEncode(input); 

也许让其他人担心呢? 请参阅LINQtoAD 。

您是否试图通过用户输入阻止对目录服务器的某种注入攻击? 如果是这种情况,我会在将输入传递给LDAP之前使用Regexvalidation输入。

将PInvoke与DsQuoteRdnValueW一起DsQuoteRdnValueW 。 有关代码,请参阅我对其他问题的回答: https : //stackoverflow.com/a/11091804/628981

上述就是C#学习教程:如何在C#中转义字符串,以便在LDAP查询中使用分享的全部内容,如果对大家有所用处且需要了解更多关于C#学习教程,希望大家多多关注---计算机技术网(www.ctvol.com)!

www.ctvol.com true Article Csharp/C#教程:如何在C#中转义字符串,以便在LDAP查询中使用分享

本文来自网络收集,不代表计算机技术网立场,如涉及侵权请联系管理员删除。

ctvol管理联系方式QQ:251552304

本文章地址:https://www.ctvol.com/cdevelopment/955321.html

(0)
上一篇 2021年11月21日 上午8:51
下一篇 2021年11月21日 上午8:53

精彩推荐