LG-13689: Rate-limit sign-in attempts based on IP+user ID#10982
Merged
Conversation
d7e7cfa to
f55fd24
Compare
mitchellhenke
approved these changes
Jul 30, 2024
Contributor
There was a problem hiding this comment.
better labeling than "locked out" imo
mdiarra3
approved these changes
Jul 31, 2024
kevinsmaster5
approved these changes
Jul 31, 2024
Contributor
kevinsmaster5
left a comment
There was a problem hiding this comment.
LGTM. Tested locally and confirm expected outcome.
changelog: Internal, Rate Limiting, Enforce additional user IP rate-limiting on sign-in
In the future, may incrementally move toward removing session-based limiting in favor of the new rate limiter
See: #10982 (comment) Co-Authored-By: Mitchell Henke <1430443+mitchellhenke@users.noreply.github.com>
Finer control See: #10982 (comment)
Co-Authored-By: Mitchell Henke <1430443+mitchellhenke@users.noreply.github.com>
Co-Authored-By: Mitchell Henke <1430443+mitchellhenke@users.noreply.github.com>
See: #10982 (comment) Co-Authored-By: Mitchell Henke <1430443+mitchellhenke@users.noreply.github.com>
It's not quite as performant and the primary use-case doesn't require it, so only use if needed
fd0dd83 to
41ddd97
Compare
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
🎫 Ticket
LG-13689
🛠 Summary of changes
Adds additional rate-limiting to the sign-in page to limit attempts based on a combination of user and IP address.
In doing so, it enhances
RateLimiterclass to support exponentially-scaling rate-limit expirations, including maximum period.📜 Testing Plan
It will be helpful to adjust local configuration to simplify testing, e.g.
With this configuration, it's expected that the lockout would max at 24 hours, which would quickly be hit with an exponential factor of 4:
Throughout testing, you can reset your local throttle cache by flushing the Redis store, using
rails console:It's also recommended to use a fresh private browsing window to avoid conflicts with
max_bad_passwordsblocking, or set the configuration for that to a high value:Verify that you cannot make any attempts past your 4th, and you're locked out for 24 hours:
👀 Screenshot