diff roundup/configuration.py @ 5717:cad18de2b988

issue2550949: Rate limit password guesses/login attempts. Generic rate limit mechanism added. Deployed for web page logins. Default is 3 login attempts/minute for a user. After which one login attempt every 20 seconds can be done. Uses gcra algorithm so all I need to store is a username and timestamp in the one time key database. This does mean I don't have a list of all failed login attempts as part of the rate limiter. Set up config setting as well so admin can tune the rate. Maybe 1 every 10 seconds is ok at a site with poor typists who need 6 attempts to get the password right 8-). The gcra method can also be used to limit the rest and xmlrpc interfaces if needed. The mechanism I added also supplies a status method that calculates the expected values for http headers returned as part of rate limiting. Also tests added to test all code paths I hope.
author John Rouillard <rouilj@ieee.org>
date Sat, 11 May 2019 17:24:58 -0400
parents c7dd1cae3416
children e199d0ae4a25
line wrap: on
line diff
--- a/roundup/configuration.py	Sun Apr 28 18:44:05 2019 -0400
+++ b/roundup/configuration.py	Sat May 11 17:24:58 2019 -0400
@@ -718,6 +718,12 @@
             "variables supplied by your web server (in that order).\n"
             "Set this option to 'no' if you do not wish to use HTTP Basic\n"
             "Authentication in your web interface."),
+        (IntegerNumberOption, 'login_attempts_min', "3",
+            "Limit login attempts per user per minute to this number.\n"
+            "By default the 4th login attempt in a minute will notify\n"
+            "the user that they need to wait 20 seconds before trying to\n"
+            "log in again. This limits password guessing attacks and\n"
+            "shouldn't need to be changed.\n"),
         (SameSiteSettingOption, 'samesite_cookie_setting', "Lax",
             """Set the mode of the SameSite cookie option for
 the session cookie. Choices are 'Lax' or

Roundup Issue Tracker: http://roundup-tracker.org/