Я пытаюсь аутентифицировать пользователей с помощью ldap.У меня есть приведенный выше код для дезинфекции ввода пользователя.
function ldapSanitize($val) {
$sanitized=array('\\' => '\5c',
'*' => '\2a',
'(' => '\28',
')' => '\29',
"\x00" => '\00');
return str_replace(array_keys($sanitized),array_values($sanitized),$val);
Я вызываю ldapSanitize для имени пользователя и пароля, как это
$uname = ldapSanitize($username);
$pass = ldapSanitize($password);
, и я использую bind для аутентификации пользователя
$ad = @ldap_connect(Config::ldaphost);
if ($ad) {
$bind = @ldap_bind($ad, $uname, $pass);
if ($bind) {
return true;
}
}
return false;
Моя проблемав том случае, если пароль имеет символ *, он преобразует его в \ 2a, и аутентификация завершается неудачно.например, если пароль «somepassword *», он меняет его на «somepassword \ 2a» и привязка завершается неудачей.
Поэтому мне было интересно, как я могу очистить пароль, но также иметь возможность аутентификации с помощью bind.