Используй PostgreSQL, а не SQLite.
Безопасность
# settings.py
DEBUG = False
SECRET_KEY = os.environ['SECRET_KEY'] # из переменной окружения
ALLOWED_HOSTS = ['yourdomain.com']
# HTTPS
SECURE_SSL_REDIRECT = True
SESSION_COOKIE_SECURE = True
CSRF_COOKIE_SECURE = True
SECURE_HSTS_SECONDS = 31536000
SECURE_HSTS_INCLUDE_SUBDOMAINS = True
# Защита от кликджекинга
X_FRAME_OPTIONS = 'DENY'
База данных
DATABASES = {
'default': dj_database_url.config(conn_max_age=600)
}
Используй PostgreSQL, а не SQLite.
Статические файлы
pip install whitenoise
MIDDLEWARE = ['whitenoise.middleware.WhiteNoiseMiddleware', ...]
STATIC_ROOT = BASE_DIR / 'staticfiles'
STATICFILES_STORAGE = 'whitenoise.storage.CompressedManifestStaticFilesStorage'
python manage.py collectstatic --no-input
Logging
LOGGING = {
'version': 1,
'handlers': {
'console': {'class': 'logging.StreamHandler'},
},
'root': {'handlers': ['console'], 'level': 'WARNING'},
}
Медиафайлы
Не храни медиафайлы на сервере — используй S3 или аналог:
pip install django-storages boto3
Мониторинг ошибок
pip install sentry-sdk
import sentry_sdk
sentry_sdk.init(dsn=os.environ['SENTRY_DSN'])
Команда проверки
python manage.py check --deploy
Выведет список проблем с безопасностью.
Чеклист
- [ ]
DEBUG = False - [ ]
SECRET_KEYиз переменной окружения - [ ] PostgreSQL вместо SQLite
- [ ]
collectstaticвыполнен - [ ] HTTPS настроен
- [ ] Миграции применены
- [ ] Суперпользователь создан
- [ ] Логирование настроено
- [ ] Sentry подключён
💬 Комментарии (0)
Комментариев пока нет
Станьте первым, кто поделится мнением об этой статье!