컴퓨터 활용/노년에 즐기는 코딩
Django 웹사이트 HTTPS 보안 설정
easyfly
2025. 8. 4. 07:27
반응형
Django 웹사이트 HTTPS 보안 설정 방법
웹사이트를 운영하다 보면 보안에 대한 고려는 선택이 아니라 필수가 됩니다. 특히 관리 페이지나 로그인 기능이 있는 경우, HTTPS(SSL)를 통해 통신을 암호화하지 않으면 사용자 정보가 외부에 노출될 수 있습니다.
이번 글에서는 Django 프로젝트에 HTTPS 보안 설정을 적용하는 방법을 공유합니다.
1. HTTPS가 필요한 이유
HTTP는 암호화되지 않은 평문으로 통신하기 때문에, 로그인 정보나 쿠키가 쉽게 도청될 수 있습니다. HTTPS는 이러한 위험을 방지해 줍니다.
Django는 자체적으로 SSL을 다루진 않지만, 보안 강화를 위한 설정값을 제공하고 있어 이를 잘 활용하면 웹 애플리케이션의 안전성을 높일 수 있습니다.
2. 적용한 보안 설정 3가지
Django의 settings.py 파일에 아래와 같은 설정을 추가했습니다.
# 보안 설정 (HTTPS 전용)
SECURE_SSL_REDIRECT = True
SESSION_COOKIE_SECURE = True
CSRF_COOKIE_SECURE = True
각 항목을 간단히 설명드리면 다음과 같습니다.

✅ SECURE_SSL_REDIRECT
- 설명: 사용자가 http://로 접속했을 때 자동으로 https://로 리디렉션합니다.
- 목적: 모든 페이지를 암호화된 통신으로 강제합니다.
- 결과: HTTP 접근이 차단되고, 안전한 HTTPS로 자동 연결됩니다.
✅ SESSION_COOKIE_SECURE
- 설명: Django의 세션 쿠키가 HTTPS 연결일 때만 브라우저에 전달되도록 제한합니다.
- 목적: 로그인 쿠키가 도청당하지 않도록 보호합니다.
- 결과: 세션 쿠키에 Secure 플래그가 붙어 HTTPS에서만 사용됩니다.
✅ CSRF_COOKIE_SECURE
- 설명: CSRF 토큰 쿠키도 HTTPS 환경에서만 전달되도록 제한합니다.
- 목적: 크로스 사이트 요청 위조 공격(CSRF)을 방지합니다.
- 결과: CSRF 보호용 쿠키에 Secure 플래그가 붙습니다.
3. 설정 위치
위 설정은 config/settings.py 파일의 하단에 다음과 같이 위치시켰습니다.
# Static files 설정 아래에
STATIC_URL = '/static/'
STATIC_ROOT = os.path.join(BASE_DIR, 'static')
# Media 파일 설정 아래에
MEDIA_URL = '/media/'
MEDIA_ROOT = os.path.join(BASE_DIR, 'media')
# 보안 설정
SECURE_SSL_REDIRECT = True
SESSION_COOKIE_SECURE = True
CSRF_COOKIE_SECURE = True
4. 적용 후 확인 방법
설정 적용 후 브라우저에서 다음 사항을 확인했습니다.
- http://도메인으로 접속하면 자동으로 https://도메인으로 리디렉션 되는지
- 브라우저 개발자 도구(F12) → Application → Cookies 탭에서 sessionid와 csrftoken 쿠키에 Secure 속성이 표시되는지
이상이 없다면 설정이 잘 반영된 것입니다.

마치며
Django의 보안 설정은 어렵지 않지만, 실서버에서 직접 적용해 보는 경험이 중요합니다.
이번 작업을 통해 관리 페이지가 HTTPS로 보호되고, 로그인 쿠키와 CSRF 토큰도 안전하게 처리되도록 개선했습니다.
HTTPS 인증서는 Let’s Encrypt를 통해 무료로 발급받을 수 있으며, 서버 설정(Nginx 등)과 연동하면 더욱 효과적인 보안 환경을 구축할 수 있습니다.
반응형