Fix (security): don't accept empty reset keys for users with no password reset pending

Currently, it's possible to reset passwords for users that do not have any password reset by providing an empty key, which would match '' or NULL.
This commit is contained in:
yorick committed 2026-10-23 13:12:17 +02:00
1 parent b0ee3081a6
commit aca44ddd5c
1 file changed
+8 -1
+8 -1
View File
@@ -37,6 +37,10 @@ class Authentication
public static function checkResetKey($id_user, $reset_key) public static function checkResetKey($id_user, $reset_key)
{ {
// Users without a pending reset have a blank key, which must never match.
if (!is_string($reset_key) || $reset_key === '')
return false;
$key = Registry::get('db')->queryValue(' $key = Registry::get('db')->queryValue('
SELECT reset_key SELECT reset_key
FROM users FROM users
@@ -45,7 +49,10 @@ class Authentication
'id' => $id_user, 'id' => $id_user,
]); ]);
return $key == $reset_key; if (!is_string($key) || $key === '')
return false;
return hash_equals($key, $reset_key);
} }
/** /**