Skip to content
Snippets Groups Projects
Unverified Commit 770381c0 authored by Joas Schilling's avatar Joas Schilling
Browse files

Correctly return ms delay when at max

parent 931aca2f
No related branches found
No related tags found
No related merge requests found
...@@ -53,6 +53,7 @@ use OCP\Security\Bruteforce\MaxDelayReached; ...@@ -53,6 +53,7 @@ use OCP\Security\Bruteforce\MaxDelayReached;
class Throttler { class Throttler {
public const LOGIN_ACTION = 'login'; public const LOGIN_ACTION = 'login';
public const MAX_DELAY = 25; public const MAX_DELAY = 25;
public const MAX_DELAY_MS = 25000; // in milliseconds
public const MAX_ATTEMPTS = 10; public const MAX_ATTEMPTS = 10;
/** @var IDBConnection */ /** @var IDBConnection */
...@@ -263,12 +264,12 @@ class Throttler { ...@@ -263,12 +264,12 @@ class Throttler {
$firstDelay = 0.1; $firstDelay = 0.1;
if ($attempts > self::MAX_ATTEMPTS) { if ($attempts > self::MAX_ATTEMPTS) {
// Don't ever overflow. Just assume the maxDelay time:s // Don't ever overflow. Just assume the maxDelay time:s
return self::MAX_DELAY; return self::MAX_DELAY_MS;
} }
$delay = $firstDelay * 2**$attempts; $delay = $firstDelay * 2**$attempts;
if ($delay > self::MAX_DELAY) { if ($delay > self::MAX_DELAY) {
return self::MAX_DELAY; return self::MAX_DELAY_MS;
} }
return (int) \ceil($delay * 1000); return (int) \ceil($delay * 1000);
} }
...@@ -338,7 +339,7 @@ class Throttler { ...@@ -338,7 +339,7 @@ class Throttler {
*/ */
public function sleepDelayOrThrowOnMax(string $ip, string $action = ''): int { public function sleepDelayOrThrowOnMax(string $ip, string $action = ''): int {
$delay = $this->getDelay($ip, $action); $delay = $this->getDelay($ip, $action);
if (($delay === self::MAX_DELAY * 1000) && $this->getAttempts($ip, $action, 0.5) > self::MAX_ATTEMPTS) { if (($delay === self::MAX_DELAY_MS) && $this->getAttempts($ip, $action, 0.5) > self::MAX_ATTEMPTS) {
// If the ip made too many attempts within the last 30 mins we don't execute anymore // If the ip made too many attempts within the last 30 mins we don't execute anymore
throw new MaxDelayReached('Reached maximum delay'); throw new MaxDelayReached('Reached maximum delay');
} }
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment