security: закрыть уязвимости аудита (PRJ-6)

- gunicorn вместо dev-сервера Werkzeug; non-root user в Dockerfile
- volume sqlite_data для БД (заявки не теряются при rebuild)
- consultations.db и data/ в .dockerignore (ПДн не попадают в образ)
- Secure-куки по умолчанию (COOKIE_SECURE=1), лимит сессии 12ч
- защитные заголовки: CSP, X-Frame-Options, nosniff, Referrer-Policy, Permissions-Policy
- MAX_CONTENT_LENGTH 64КБ
- анти-брутфорс админки: 5 попыток -> блокировка 15 мин + лимит 5/мин
- обязательный чекбокс согласия на обработку ПДн + страница /privacy
- .env.example: понятные плейсхолдеры, COOKIE_SECURE
This commit is contained in:
2026-08-06 16:12:48 +04:00
parent 4e6b655a2b
commit 971e51b6f5
9 changed files with 126 additions and 8 deletions
+5 -3
View File
@@ -1,7 +1,9 @@
# Обязательные переменные. Без них приложение не запустится.
SECRET_KEY=сгенерируйте-случайную-строку-50-символов
ADMIN_PASSWORD=надёжный-пароль-админки
SECRET_KEY=change-me-strong-random-secret
ADMIN_PASSWORD=change-me-strong-admin-password
# Secure-куки: сайт работает только по HTTPS, держать включённым (=1)
COOKIE_SECURE=1
# Необязательные
# FLASK_DEBUG=1 # только для локальной разработки
# COOKIE_SECURE=1 # включить при работе по HTTPS