Rate limits
How the Studio stops people from guessing member codes and facts.
Studio roles: "Owner", "Administrator" and "Community manager" see refused checks in the check lookup. The limits are fixed: there is nothing to set.
Without limits, someone could try member codes, names and birth dates until one fits. The Studio therefore counts failed checks and refuses further checks once a limit is reached.
What counts as a failed check
A failed check is a "Not valid" result in onboarding or eligibility mode, including "Valid, but outside the frontend's community".
These do not count:
- an "Unavailable" result, when a register could not answer;
- a login check, as nobody types anything;
- a check already refused as rate limited.
A check still running counts as failed until it is logged, at most for 2 minutes. That way many checks sent at the same moment cannot all slip through before the first is logged.
The limits
| Counted per | Limit |
|---|---|
| Member code | 5 failed checks in 15 minutes |
| Applicant IP address a frontend forwarded (eligibility only) | 20 failed checks in 15 minutes |
| Frontend | 500 failed checks in an hour |
The windows slide: a failed check stops counting once it is older than the window.
For the member code, the ways one code can be typed count as one code: variants that differ only in a leading plus sign or zeros, in case, in spaces, in invisible characters or in forms such as fullwidth digits. PQ-10017, pq-10017 and PQ-10017 share one budget. A separator still makes another code: PQ10017 is not PQ-10017.
When a limit is reached
The check is refused before any register is asked. The person sees that they should try again later; a frontend's backend gets the answer that it was rate limited. The check lookup shows the check as "Rate limited".
A person who reached the member code's limit can try again after 15 minutes. If someone keeps failing, look up their member code in the check lookup: the reasons of the failed checks usually show what is wrong.