我有以下幾點:如何禁止匿名ldap登錄?
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
。
我該如何預防?是我唯一的選擇,像我上面做的,我必須檢查到請確保密碼不是空的?或者,還有更好的方法?
這有什麼錯檢查'$ password'是不是空的?看起來像非常基本的驗證。只是拋出一個異常。 – ceejayoz
@ceejayoz這似乎是一個額外的事情,可能不需要,如果有一個'ldap_ *'函數爲你做。 – Neal
我懷疑有一個'ldap_ *'函數來完成它時,它是一個簡單的'如果($密碼)'...尤其是結合W/O密碼在技術上是合法的。 – ceejayoz