Библиотека novell.directory.ldap c # уже предотвращает внедрение ldap или мне нужно самостоятельно кодировать вводимые пользователем данные? - PullRequest
0 голосов
/ 09 июля 2019

В настоящее время я разрабатываю пользовательский интерфейс для управления пользователями и прочим.В качестве хранилища данных я должен использовать ldap.Я использую библиотеку novell.directory.ldap для вещей, связанных с ldap.

Теперь мне интересно, выполняет ли эта библиотека кодирование параметров, которые она получает, например, при выполнении поиска илиесли мне придется кодировать потенциальный пользовательский ввод, например имена пользователей, которые позже будут использоваться в поисковых запросах, сам.

Я уже пытался выполнить кодирование с помощью AntiXSSLibrary (я используюпакет nuget sicne, кодировка ldap не была включена в саму .net Framework, как и другие части библиотеки) и его Encoder.LdapFilterEncode() и Encoder.LdapDistinguishedNameEncode() методы.

Это мой код при попытке кодировать:

    public static LdapSearchResults PerformSearch(LdapConnection connection, string filter, string basedn)
    {
        string encodedFilter = Encoder.LdapFilterEncode(filter);
        string encodedBasedn = Encoder.LdapDistinguishedNameEncode(basedn);
        LdapSearchConstraints searchConstraints = new LdapSearchConstraints { BatchSize = 0 };
        return connection.Search(encodedBasedn, LdapConnection.SCOPE_SUB, encodedFilter, null, false, searchConstraints);
    }
  • Если я передам параметры напрямую (= не закодировано), все будет работать как положено.
  • Если я передам закодированный фильтр, я получу LdapLocalException с сообщением «Ошибка фильтра» в методе Search() экземпляра LdapConnection.
  • Если я пропущу некодированный фильтри передать закодированный базис, я получу LdapException с сообщением «Неверный синтаксис DN» при попытке получить доступ к результатам поиска.
  • Если я пропущу некодированный фильтр и передам экодированный базис, в этом случае закодированный с помощьюметод Encoder.LdapFilterEncode(), все будет работать нормально.

Итак, главный вопрос: нужно ли мне беспокоиться о внедрении ldap или библиотека уже позаботилась об этой угрозе?К сожалению, я не смог найти ответ на этот вопрос в документации и поиске в Интернете.

Если мне нужно кодировать (что я ожидаю, я должен сделать в данный момент), что является самым простым и безопаснымспособ кодирования входов для ldap в C # /. Net, когда AntiXSSLibrary не работает для меня?

...