Как выйти из строки в C# для использования в запросе LDAP

Согласно документу образы VM для глубокого обучения , он использует Debian 9 «Stretch» ​​

. Поэтому все, что вам нужно сделать, это следовать этому документу . в Debian 9

Используя тестовый пакет, начните с редактирования файла /etc/apt/sources.list в вашем любимом редакторе (мы будем использовать nano) и добавьте строку ниже в Внизу файла:

# sudo nano /etc/apt/sources.list

deb http://ftp.de.debian.org/debian testing main

Затем выполните следующую команду, чтобы установить «стабильный» репозиторий по умолчанию на вашем сервере:

# echo 'APT::Default-Release "stable";' | sudo tee -a /etc/apt/apt.conf.d/00local

Теперь обновите список пакетов:

[ 112]

И установите Python 3.6.4 из репозитория Debian 'testing', используя следующую команду:

# sudo apt-get -t testing install python3.6

Если все прошло хорошо, выполните следующую команду, чтобы открыть интерпретатор Python 3.6.4:

# python3.6

15
задан Sophia 16 March 2009 в 05:34
поделиться

4 ответа

Следующее является моим переводом из кода Java, упомянутого Sophia в C#.

/// <summary>
/// Escapes the LDAP search filter to prevent LDAP injection attacks.
/// </summary>
/// <param name="searchFilter">The search filter.</param>
/// <see cref="https://blogs.oracle.com/shankar/entry/what_is_ldap_injection" />
/// <see cref="http://msdn.microsoft.com/en-us/library/aa746475.aspx" />
/// <returns>The escaped search filter.</returns>
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(@"\00");
                break;
            case '/':
                escape.Append(@"\2f");
                break;
            default:
                escape.Append(current);
                break;
        }
    }

    return escape.ToString();
}
29
ответ дан 1 December 2019 в 00:50
поделиться

Я нашел решение здесь в сообщении в блоге об Инжекции LDAP

Это решение включает добавление Вашей собственной функции для выхода из имени пользователя и доменного имени, его решение находится в Java, но идея там.

Также списки MSDN, какие специальные символы должны быть заменены escape-последовательностями.

Насколько я могу сказать, кажется, нет никакого метода для выхода из строк LDAP в Системе. DirectoryServices (как существует в HttpServerUtility для URL и т.д.),

5
ответ дан 1 December 2019 в 00:50
поделиться

Вы пытаетесь предотвратить своего рода инжекционное нападение на свой сервер каталогов через ввод данных пользователем? Если это так, я просто проверил бы вход с Regex прежде, чем передать его LDAP.

2
ответ дан 1 December 2019 в 00:50
поделиться

Возможно, позвольте кому-то еще волноваться об этом? Посмотрите LINQtoAD.

2
ответ дан 1 December 2019 в 00:50
поделиться
Другие вопросы по тегам:

Похожие вопросы: