반응형
✅ 왜 DEBUG = False를 꼭 해야 할까?
👉 DEBUG = True 상태에서 발생하는 문제들:
1. 🧨 예외 발생 시 내부 정보가 그대로 노출됨
- Django는 에러가 나면 아래처럼 친절한 에러 페이지를 보여줌:
더보기
TypeError at /users/
str() argument must be str, not NoneType
Request Method: GET
Request URL: http://example.com/users/
Python Version: 3.10
Django Version: 4.2.14
Installed Apps: [...]
str() argument must be str, not NoneType
Request Method: GET
Request URL: http://example.com/users/
Python Version: 3.10
Django Version: 4.2.14
Installed Apps: [...]
🔓 이게 무슨 문제냐면?
- 코드 경로 (/home/ubuntu/myproject/venv/lib/...)
- 사용 중인 Python, Django, 라이브러리 버전
- 설정된 앱 이름 등등
→ 해커 입장에서 공격 대상 시스템의 정보가 다 까발려짐
2. 🔓 정적 파일이 직접 서빙됨
DEBUG = True일 때는 Django 자체가 /static/, /media/를 직접 처리함.
운영환경에서는 반드시 Nginx 같은 웹서버가 처리하게 해야 해.
3. ❌ 보안 관련 미들웨어가 정상 동작 안 할 수도 있음
- SECURE_SSL_REDIRECT, SESSION_COOKIE_SECURE, CSRF_COOKIE_SECURE 등은
보통 DEBUG = False일 때만 작동하도록 되어 있음
✅ 그러면 DEBUG=False면 뭐가 필요할까?
1. ALLOWED_HOSTS 반드시 설정해야 함
더보기
DEBUG = False
ALLOWED_HOSTS = ['example.com', 'http://www.example.com']
ALLOWED_HOSTS = ['example.com', 'http://www.example.com']
→ 아니면 아래와 같은 에러:
더보기
CommandError: You must set settings.ALLOWED_HOSTS if DEBUG is False.
2. static 파일 직접 못 서빙함 → collectstatic 필요
더보기
python manage.py collectstatic
→ Nginx 또는 WhiteNoise 등의 static 파일 서버가 필요함
3. 보안 설정들 추가로 필요
더보기
SECURE_SSL_REDIRECT = True
SESSION_COOKIE_SECURE = True
CSRF_COOKIE_SECURE = True
SECURE_HSTS_SECONDS = 3600
SECURE_HSTS_INCLUDE_SUBDOMAINS = True
SECURE_HSTS_PRELOAD = True
SESSION_COOKIE_SECURE = True
CSRF_COOKIE_SECURE = True
SECURE_HSTS_SECONDS = 3600
SECURE_HSTS_INCLUDE_SUBDOMAINS = True
SECURE_HSTS_PRELOAD = True
반응형
'WEB > Python-Django' 카테고리의 다른 글
| Docker 관련 명령어 (0) | 2025.07.04 |
|---|---|
| Docker 설정(.env.dev) (1) | 2025.07.04 |
| Docker설정(docker-compose.yml) (0) | 2025.07.04 |
| Docker 설정(Dockerfile) (0) | 2025.07.04 |
| Docker 설정(requirements.txt) (2) | 2025.07.04 |