Предотвращение инжекция LDAP

Я работаю над своим первым настольным приложением, которое запрашивает LDAP. Я работаю в C под Unix и использую opends, и я плохо знаком с LDAP. После Уокинга некоторое время, на котором я заметил, что пользователь мог смочь изменить запрос LDAP путем введения вредоносного кода.
Я хотел бы знать, какие санирующие методы известны, не только для разработки C/unix, но и в более общих чертах, т.е. веб-разработка и т.д.
Я думал, что выход равняется, и точки с запятой были бы достаточно, но не уверены.

Вот маленький кусочек кода, таким образом, я могу сделать более ясным вопрос:

 String ldapSearchQuery = "(cn=" + $userName + ")";
 System.out.println(ldapSearchQuery); 

Очевидно, я действительно должен санировать $userName, как указано в этой СТАТЬЕ OWASP

19
задан Matias 12 June 2010 в 13:10
поделиться

2 ответа

OWASP - хорошее руководство по безопасности, которое я часто использую, и в нем есть пример кода (на Java, но вы должны уметь переводить): http://www.owasp.org/index.php/Preventing_LDAP_Injection_in_Java

Кроме того, вот специальная ссылка Active Directory: http://www.rlmueller.net/CharactersEscaped.htm

11
ответ дан 30 November 2019 в 05:04
поделиться

Вы уже получили ответ в комментарии к вопросу. Он есть в RFC 2254.

Вот что я использую в PHP. Что-то эквивалентное в вашем языке должно быть достаточно.

/**
 * Sanitizes ldap search strings.
 * See rfc2254
 * @link http://www.faqs.org/rfcs/rfc2254.html
 * @since 1.5.1 and 1.4.5
 * @param string $string
 * @return string sanitized string
 * @author Squirrelmail Team
 */
function ldapspecialchars($string) {
    $sanitized=array('\\' => '\5c',
                     '*' => '\2a',
                     '(' => '\28',
                     ')' => '\29',
                     "\x00" => '\00');

    return str_replace(array_keys($sanitized),array_values($sanitized),$string);
}
3
ответ дан 30 November 2019 в 05:04
поделиться
Другие вопросы по тегам:

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