]> source.dussan.org Git - nextcloud-server.git/commitdiff
Don't use slow hashing to check the LDAP binding 32282/head
authorCarl Schwan <carl@carlschwan.eu>
Mon, 2 May 2022 19:46:42 +0000 (21:46 +0200)
committerbackportbot-nextcloud[bot] <backportbot-nextcloud[bot]@users.noreply.github.com>
Thu, 5 May 2022 16:59:26 +0000 (16:59 +0000)
Using password_hash is expensive and should be used for hashing
passwords when saving them in the database. Here we just want to see if
the bind was already done with the given password, so use a fast hashing
algorythm.

Signed-off-by: Carl Schwan <carl@carlschwan.eu>
apps/user_ldap/lib/Connection.php

index 565fb415e5863368f8268496d64305e113a9c59d..89b58b7ebfd5b0a7781b8de483515181b8c542e5 100644 (file)
@@ -128,7 +128,7 @@ class Connection extends LDAPUtility {
        protected $ignoreValidation = false;
 
        /**
-        * @var array{dn?: mixed, hash?: string, result?: bool}
+        * @var array{sum?: string, result?: bool}
         */
        protected $bindResult = [];
 
@@ -672,11 +672,7 @@ class Connection extends LDAPUtility {
 
                if (
                        count($this->bindResult) !== 0
-                       && $this->bindResult['dn'] === $this->configuration->ldapAgentName
-                       && \OC::$server->getHasher()->verify(
-                               $this->configPrefix . $this->configuration->ldapAgentPassword,
-                               $this->bindResult['hash']
-                       )
+                       && $this->bindResult['sum'] === md5($this->configuration->ldapAgentName . $this->configPrefix . $this->configuration->ldapAgentPassword)
                ) {
                        // don't attempt to bind again with the same data as before
                        // bind might have been invoked via getConnectionResource(),
@@ -689,8 +685,7 @@ class Connection extends LDAPUtility {
                                                                                $this->configuration->ldapAgentPassword);
 
                $this->bindResult = [
-                       'dn' => $this->configuration->ldapAgentName,
-                       'hash' => \OC::$server->getHasher()->hash($this->configPrefix . $this->configuration->ldapAgentPassword),
+                       'sum' => md5($this->configuration->ldapAgentName . $this->configPrefix . $this->configuration->ldapAgentPassword),
                        'result' => $ldapLogin,
                ];