代码之家  ›  专栏  ›  技术社区  ›  Matthew

使用DirectorySearcher时如何防止LDAP注入

  •  1
  • Matthew  · 技术社区  · 6 年前

    有人问过这个问题 before

    id 它是一个可能来自web表单或其他东西的字符串,不能完全信任。

    DirectorySearcher search = new DirectorySearcher(new DirectoryEntry());
    search.Filter = "(&(objectClass=user)(employeeid=" + id + "))";
    search.PropertiesToLoad.Add("mail");
    search.PropertiesToLoad.Add("telephonenumber");
    SearchResult sresult = search.FindOne();
    

    如您所见,输入一个 身份证件 OWASP considers this 成为一个严重的弱点。预防这种情况的最佳现代方法是什么?

    我不想有自己的代码 like this

    AntiXSS 图书馆:

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

    但是 it appears 不再维护此库:

    在.NET4.0中,框架中包含了AntiXSS的一个版本,并且 可以通过配置启用。在ASP.NETv5基于白名单 源代码和安装程序将保持在线,允许用户使用 .NET的早期版本,以启用另一种基于白名单的 制造。

    很多答案都指向 LinqtoAD

    免责声明 这个项目是关于实现自定义LINQ的一个基本示例 行为。最欢迎用户通过 此网站上的问题跟踪程序。

    什么是现代方法?在较新版本的.NETFramework中是否有任何东西可以减轻LDAP注入?

    0 回复  |  直到 6 年前