Я работаю над своим первым настольным приложением, которое запрашивает LDAP. Я работаю в C под Unix и использую opends, и я плохо знаком с LDAP. После Уокинга некоторое время, на котором я заметил, что пользователь мог смочь изменить запрос LDAP путем введения вредоносного кода.
Я хотел бы знать, какие санирующие методы известны, не только для разработки C/unix, но и в более общих чертах, т.е. веб-разработка и т.д.
Я думал, что выход равняется, и точки с запятой были бы достаточно, но не уверены.
Вот маленький кусочек кода, таким образом, я могу сделать более ясным вопрос:
String ldapSearchQuery = "(cn=" + $userName + ")";
System.out.println(ldapSearchQuery);
Очевидно, я действительно должен санировать $userName, как указано в этой СТАТЬЕ OWASP
OWASP - хорошее руководство по безопасности, которое я часто использую, и в нем есть пример кода (на Java, но вы должны уметь переводить): http://www.owasp.org/index.php/Preventing_LDAP_Injection_in_Java
Кроме того, вот специальная ссылка Active Directory: http://www.rlmueller.net/CharactersEscaped.htm
Вы уже получили ответ в комментарии к вопросу. Он есть в 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);
}