-
Notifications
You must be signed in to change notification settings - Fork 5
Home
Everything here is open for discussion.
Things i definitely want to do:
-
Create indexes in the database, add the Data definition SQL to the install documentation,
-
Make unit tests run also from the command line,
-
The user agent in the RequestCount keys will lead to too many records under brute force attacks 1). Do not use user agent, replace by support for long term cookie token (setting and retrieving the cookie will remain NYI for now)
-
Releasing for more IP adresses. Currently releasing by username is either for all IP addresses (including those that have misbehaved) or only for a specific IP address and user agent. This could be extended to other IP addresses that are not blocked by address and do not have more then the limitPerUserName failures for the user name.
-
Add configurable timeouts after last login (discussion).
-
Add a function for clean-up of the RequestCounts table. Records older then the longest of the configured durations are useless and slow down the retrieval. They can be deleted.
-
Add RequestCountsManagerInterface and Manager to facilitate custom NoSQL storage of RequestCounts 1)
-
Remove Requestcounts entity, limit dependency from Doctrine to DBAL,
-
Make a separate repo on Github with a composer library with those parts that do not require Symfony (primarily the TresholdsGovernor and the RequestCountsRepository class)
-
Add complete api docs
-
Make the database queries independent from Doctrine (use plain SQL, add support for running them on PD directly (? can DBAL QueryBuilder be used with MongoDB? If so, make KISSQueryBuilder for PDO, if not plain SQL is the simpelest solution)
These i may do at some point, or others may do them, but it's hard to say if and when.
-
Periodically pack the Requestcounts table. If one of the durations is substantially longer then the others, records that are older the the shorter duration ago may be packed into ones with a longer counting duration.
-
Estimation of credibility. Currently only the number of failed logins per IP address count. This may result in the blocking of adresses that harbour many users. Other measures could be taken into accout, like the number of successfull attempts over a longer duration.
-
Releasing by long term cookies. On a successfull login a long term cookie could be set and stored in the RequestCounts record intstead of the user agent (Choice could be made configurable). This would also help against flooding of the RequestCounts by random user agent strings sent in brute force attacks.
-
Add (example) Controllers and templates for sending e-mails with urls with release tokens and for processing the resulting release requests.
-
Fulfilling more OWASP requirements (discussion).
-
Adding more Guard classes for different types of Authentication Listener, or replacing it by other hooks into symfony's authentication (discussion)
-
Keep track of usage that is a-typical for legitimate application users 2). For example an Exception Listener that tracks and counts routing Exceptions and invalid parameter Exceptions. It could send e-mails to security officers, and/or lock out a user until he/she requests na e-mail for reactivation after password change. IMHO this is out of scope for this bundle.
1) The importance of this was suggested by Remko Silvis at GroningenPHP, februari 2014
2) Suggested by Aukje Holtrop at GroningenPHP, februari 2014