umbau 1.0

This commit is contained in:
2026-09-02 20:30:44 +02:00
parent afe6719f51
commit 5c95b21be7
77 changed files with 10733 additions and 1914 deletions

View File

@ -11,6 +11,8 @@ from __future__ import annotations
import time
from collections import defaultdict, deque
from app.config import settings
class SlidingWindowRateLimiter:
def __init__(self, max_events: int, window_seconds: int) -> None:
@ -29,6 +31,16 @@ class SlidingWindowRateLimiter:
return True
# Max. 10 Login-Versuche pro Minute und Quell-IP; ergaenzt den
# Account-basierten Lockout in app/auth/routes.py.
login_rate_limiter = SlidingWindowRateLimiter(max_events=10, window_seconds=60)
# E8 (Umsetzungsauftrag Teil E): Werte konfigurierbar (settings.login_rate_
# limit_*, siehe app/config.py) statt fest verdrahtet -- ergaenzt den
# Account-basierten Lockout in app/auth/routes.py. ACHTUNG: greift pro
# Quell-IP. Sitzen mehrere interne Benutzer hinter derselben NAT-Adresse
# (typischer Buero-Fall), teilen sie sich dieses Budget; das ist eine
# bewusste Betriebsentscheidung und muss zusammen mit dem nginx-limit_req
# und der fail2ban-Schwelle (beide ebenfalls konfigurierbar, siehe
# ansible/roles/nginx_proxy und ansible/roles/fail2ban) im Betriebshandbuch
# festgehalten werden.
login_rate_limiter = SlidingWindowRateLimiter(
max_events=settings.login_rate_limit_max_events,
window_seconds=settings.login_rate_limit_window_s,
)