forked from username/flaskpaste
perf: cache is_trusted_proxy result per request
This commit is contained in:
@@ -600,12 +600,20 @@ def require_auth() -> Response | None:
|
||||
|
||||
|
||||
def is_trusted_proxy() -> bool:
|
||||
"""Verify request comes from trusted reverse proxy via shared secret."""
|
||||
"""Verify request comes from trusted reverse proxy via shared secret.
|
||||
|
||||
Result is cached per-request in Flask's g object for efficiency.
|
||||
"""
|
||||
if hasattr(g, "_trusted_proxy"):
|
||||
return g._trusted_proxy
|
||||
|
||||
expected = current_app.config.get("TRUSTED_PROXY_SECRET", "")
|
||||
if not expected:
|
||||
g._trusted_proxy = True
|
||||
return True
|
||||
provided = request.headers.get("X-Proxy-Secret", "")
|
||||
return hmac.compare_digest(expected, provided)
|
||||
g._trusted_proxy = hmac.compare_digest(expected, provided)
|
||||
return g._trusted_proxy
|
||||
|
||||
|
||||
def get_client_fingerprint() -> str | None:
|
||||
|
||||
Reference in New Issue
Block a user