security: закрыть уязвимости аудита
- Secure-куки (SESSION/CSRF_COOKIE_SECURE), HSTS, nosniff, Referrer-Policy, X-Frame-Options - SECURE_PROXY_SSL_HEADER для корректной работы за HTTPS-прокси - антиспам: не более 3 заявок с одного IP за 10 минут (кэш) - удалён мусорный main.py (заглушка PyCharm) - .env.example: DJANGO_DEBUG=0, ALLOWED_HOSTS под прод, COOKIE_SECURE/HSTS включены
This commit is contained in:
@@ -50,10 +50,37 @@ MIDDLEWARE = [
|
||||
"django.middleware.clickjacking.XFrameOptionsMiddleware",
|
||||
]
|
||||
|
||||
# --- HTTPS / безопасность кук (сайт работает только через HTTPS-прокси) ---
|
||||
# nginx должен передавать заголовок X-Forwarded-Proto: https
|
||||
SECURE_PROXY_SSL_HEADER = ("HTTP_X_FORWARDED_PROTO", "https")
|
||||
SESSION_COOKIE_SECURE = os.environ.get("DJANGO_COOKIE_SECURE", "1") == "1"
|
||||
CSRF_COOKIE_SECURE = os.environ.get("DJANGO_COOKIE_SECURE", "1") == "1"
|
||||
SESSION_COOKIE_HTTPONLY = True
|
||||
SESSION_COOKIE_SAMESITE = "Lax"
|
||||
SECURE_CONTENT_TYPE_NOSNIFF = True
|
||||
SECURE_REFERRER_POLICY = "strict-origin-when-cross-origin"
|
||||
X_FRAME_OPTIONS = "DENY"
|
||||
SECURE_HSTS_SECONDS = int(os.environ.get("DJANGO_HSTS_SECONDS", "31536000"))
|
||||
SECURE_HSTS_INCLUDE_SUBDOMAINS = True
|
||||
SECURE_HSTS_PRELOAD = True
|
||||
# Редирект на HTTPS не включаем — его делает nginx (иначе цикл при неправильном X-Forwarded-Proto)
|
||||
# SECURE_SSL_REDIRECT = True
|
||||
|
||||
# --- django-axes: защита от брутфорса логина ---
|
||||
AXES_FAILURE_LIMIT = 5
|
||||
AXES_COOLOFF_TIME = 1 # часы
|
||||
AXES_RESET_ON_SUCCESS = True
|
||||
AXES_LOCKOUT_PARAMETERS = ["ip_address"]
|
||||
|
||||
# --- антиспам: лимит заявок с одного IP ---
|
||||
# Кэш in-memory (locmem) подходит для одного воркера; для нескольких воркеров
|
||||
# нужно memcached/redis, иначе лимит считается на каждый процесс отдельно.
|
||||
CACHES = {
|
||||
"default": {
|
||||
"BACKEND": "django.core.cache.backends.locmem.LocMemCache",
|
||||
"LOCATION": "teacher-site-cache",
|
||||
}
|
||||
}
|
||||
|
||||
ROOT_URLCONF = "config.urls"
|
||||
|
||||
|
||||
Reference in New Issue
Block a user