fix: konstante Zeit fuer API-Key-Vergleich, Auth-Tests erweitert

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
This commit is contained in:
2026-07-17 18:07:20 +02:00
parent a10f4d0b57
commit 193bbc450c
2 changed files with 17 additions and 1 deletions

View File

@@ -46,7 +46,7 @@ def session_valid(token: str | None) -> bool:
def require_auth(request: Request) -> None:
settings = get_settings()
header = request.headers.get("authorization", "")
if settings.api_key and header == f"Bearer {settings.api_key}":
if settings.api_key and hmac.compare_digest(header, f"Bearer {settings.api_key}"):
return
if session_valid(request.cookies.get(COOKIE)):
return

View File

@@ -12,3 +12,19 @@ def test_login_flow(client):
follow_redirects=False)
assert r.status_code == 303
assert client.get("/api/accounts").status_code == 200 # Cookie reicht
def test_logout_flow(client):
r = client.post("/login", data={"username": "admin", "password": "geheim"},
follow_redirects=False)
assert r.status_code == 303
assert client.get("/api/accounts").status_code == 200
r = client.post("/logout", follow_redirects=False)
assert r.status_code == 303
assert client.get("/api/accounts").status_code == 401
def test_tampered_session_cookie_rejected(client):
client.cookies.set("fb_session", "gui.invalid-signature")
assert client.get("/api/accounts").status_code == 401