私は次のものを持っています:
class LDAPConnection {
private $ldapServers = array(
"ldap://serv1", "ldap://serv2"
);
private $ldapUsername = "DOMAIN\\%s";
function login($username, $password) {
$user = sprintf($this->ldapUsername, $username);
// Make sure password is not empty (http://stackoverflow.com/a/172042/561731)
if(!empty($password)) {
foreach($this->ldapServers as $server) {
try {
$ldap = \ldap_connect($server);
\ldap_set_option($ldap, LDAP_OPT_PROTOCOL_VERSION, 3);
if($bind = \ldap_bind($ldap, $user, $password)) {
// log them in
return true;
}
}
catch(\ErrorException $e) {
// do nothing
}
}
}
return false;
}
}
ご覧のとおり、最初に$password
が空でないことを確認してから、ldap 接続を試みます。これを行わないと、ldap は匿名接続を行いたいと想定して を返しますtrue
。
どうすればそれを防ぐことができますか? 上記のように私の唯一のオプションであり、パスワードが空でないことを確認する必要がありますか? それとももっと良い方法がありますか?