Repository navigation
Release v1.17.0
Release v1.17.0
Changelog
Added
security.login_throttle(on by default:enabled: true,limit: 5,interval: '15 minutes',policy: fixed_window,limiter: null,cache_pool: null): per-client-IP rate limit of panel password attempts.Security\ThrottledSiteBackupAccessGate(servicenowo_site_backup.access_gate, target of theSiteBackupAccessGateInterfacealias) wraps the default password gate or the customsecurity.access_gate; it only throttles whileisProtectionEnabled()is true, resets the limiter on success and throwsTooManyRequestsHttpExceptionwithRetry-Afterwhen exhausted. The built-in limiter isnowo_site_backup.login_limiter(RateLimiterFactory,CacheStorageoncache_pool??cache.rate_limiter??cache.app, optionallock.factory);limiterplugs a hostRateLimiterFactoryInterfaceservice instead.DependencyInjection\Compiler\LoginThrottleStoragePassfails at compile time with an actionable message when no pool exists.- Panel login renders the throttle as the login page with HTTP 429,
Retry-Afterand the translatedpanel.login.too_many_attemptsmessage (all 7 locales; template variablethrottled). Also applies to host decorators that throwTooManyRequestsHttpException. - Session fixation protection: after a successful panel login the session id is rotated (
$session->migrate(true)), also whenlogin_throttle.enabled: falseor with a custom gate.
Changed
symfony/rate-limiter(^7.3 || ^8.0) is now a hard requirement (needed by the default-on throttle;RateLimiterFactoryInterfaceexists since 7.3).- The
SiteBackupAccessGateInterfacealias now points tonowo_site_backup.access_gateinstead ofPasswordSiteBackupAccessGate/ the custom gate id (both remain registered and are injected as the inner gate). SiteBackupPanelControllertakes an optional$translator(last argument).- Igor: annotated four pre-existing false positives (persistent I/O / per-request locale) with
@igor-ignore. - Tooling: Rector skips
DependencyInjection/Configuration.php(its scope analysis never finished, sorector-drytimed out); two Rector fixes applied (Command::INVALID, redundant string cast). Lock refresh: UiKitBundle 1.12.0. Democonfig/reference.phpregenerated.
Full Changelog: v1.16.0...v1.17.0