From 7e69610981855037501d833a945f44870a654d4c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Mateusz=20Gruszczy=C5=84ski?= Date: Sat, 26 Jul 2025 23:22:33 +0200 Subject: [PATCH] fix dla xiastek not secure --- .env.example | 16 ++++++++++------ app.py | 9 ++++++++- config.py | 1 + 3 files changed, 19 insertions(+), 7 deletions(-) diff --git a/.env.example b/.env.example index 8fd7a9b..5b1882f 100644 --- a/.env.example +++ b/.env.example @@ -99,12 +99,16 @@ ENABLE_XCTO=1 # Zalecane: 1. Ustaw 0, jeśli używasz zewnętrznych skryptów lub masz problemy z WebSocketami (w CSP: connect-src 'self'). ENABLE_CSP=1 -# ENABLE_PP: -# Ustawia nagłówek Permissions-Policy, który ogranicza wybrane funkcje przeglądarki (np. Topics API od Google). -# Domyślnie wyłączone. Włączenie ustawi: Permissions-Policy: browsing-topics=() -# Zalecane: 1 — jeśli chcesz zwiększyć prywatność użytkowników i zablokować Topics API. -# Ustaw 0, jeśli chcesz całkowicie pominąć ten nagłówek. -ENABLE_PP=0 +# REFERRER_POLICY: +# Ustawia nagłówek Referrer-Policy, który kontroluje, ile informacji o źródle (refererze) +# jest przekazywane podczas nawigacji lub zapytań sieciowych. +# Domyślnie: strict-origin-when-cross-origin — pełny URL tylko w obrębie tej samej domeny, +# a przy przejściach między domenami tylko origin (np. https://example.com). +# Zalecane ustawienie dla dobrej równowagi między prywatnością a funkcjonalnością. +# Inne możliwe wartości: no-referrer, same-origin, origin, strict-origin, unsafe-url itd. + +REFERRER_POLICY="strict-origin-when-cross-origin" + # DEBUG_MODE: # Czy uruchomić aplikację w trybie debugowania (z konsolą błędów i autoreloaderem) diff --git a/app.py b/app.py index f2d8a83..59c58de 100644 --- a/app.py +++ b/app.py @@ -86,6 +86,8 @@ talisman = Talisman( content_security_policy=csp_policy, x_content_type_options=app.config.get("ENABLE_XCTO", True), strict_transport_security_include_subdomains=False, + referrer_policy=app.config.get("REFERRER_POLICY"), + ) register_heif_opener() # pillow_heif dla HEIC @@ -830,7 +832,12 @@ def system_auth(): reset_failed_attempts(ip) resp = redirect(next_page) max_age = app.config.get("AUTH_COOKIE_MAX_AGE", 86400) - resp.set_cookie("authorized", AUTHORIZED_COOKIE_VALUE, max_age=max_age) + resp.set_cookie( + "authorized", + AUTHORIZED_COOKIE_VALUE, + max_age=max_age, + secure=request.is_secure + ) return resp else: register_failed_attempt(ip) diff --git a/config.py b/config.py index bf94a7b..3cd4532 100644 --- a/config.py +++ b/config.py @@ -36,6 +36,7 @@ class Config: ENABLE_XCTO = os.environ.get("ENABLE_XCTO", "0") == "1" ENABLE_CSP = os.environ.get("ENABLE_CSP", "0") == "1" ENABLE_PP = os.environ.get("ENABLE_PP", "0") == "1" + REFERRER_POLICY = os.environ.get("REFERRER_POLICY") or None DEBUG_MODE = os.environ.get("DEBUG_MODE", "1") == "1" DISABLE_ROBOTS = os.environ.get("DISABLE_ROBOTS", "0") == "1"