django.contrib.auth
에 대한 설정입니다.
AUTHENTICATION_BACKENDS
¶기본값: ['django.contrib.auth.backends.ModelBackend']
사용자 인증을 시도할 때 사용할 인증 백엔드 클래스(문자열 형태)의 목록입니다. 자세한 내용은 인증 백엔드 문서를 참조하세요.
AUTH_USER_MODEL
¶기본값: 'auth.User'
사용자를 나타내는 모델입니다. 사용자 모델 커스터마이징을 참조하세요.
경고
프로젝트의 수명 동안(AUTH_USER_MODEL
에 의존하는 모델을 만들고 마이그레이션한 후) AUTH_USER_MODEL
설정을 변경할 수 없습니다. 이는 프로젝트 시작 시 설정하도록 의도되었으며, 해당 모델은 해당하는 앱의 첫 번째 마이그레이션에서 사용 가능해야 합니다. 자세한 내용은 사용자 모델 커스터마이징을 참조하세요.
LOGIN_REDIRECT_URL
¶기본값: '/accounts/profile/'
로그인 후 요청이 next
GET 매개변수를 가지지 않은 경우, 요청을 리디렉션하는 URL 또는 이름이 지정된 URL 패턴입니다.
LOGIN_URL
¶기본값: '/accounts/login/'
login_required()
, LoginRequiredMixin
, 또는 AccessMixin
을 사용하여 로그인하는 경우, 로그인을 위해 요청을 리디렉션하는 URL 또는 이름이 지정된 URL 패턴입니다.
LOGOUT_REDIRECT_URL
¶기본값: None
LogoutView
에 next_page
속성이 없는 경우 로그아웃 후 요청을 리디렉션하는 URL 또는 이름이 지정된 URL 패턴입니다.
None
인 경우 리디렉션을 수행하지 않고 로그아웃 뷰가 렌더링됩니다.
PASSWORD_RESET_TIMEOUT
¶기본값: 259200
(3일, 초 단위)
비밀번호 재설정 링크의 유효 기간(초 단위)입니다.
PasswordResetConfirmView
에서 사용됩니다.
참고
이 타임아웃 값을 줄이는 것은 공격자가 비밀번호 재설정 토큰을 무차별 대입으로 공격할 수 있는 능력에는 영향을 주지 않습니다. 토큰은 타임아웃 없이 무차별 대입으로부터 안전하도록 설계되었습니다.
이 타임아웃은 비밀번호 재설정 토큰을 포함하는 오래된, 사용되지 않은 이메일 아카이브에 접근하는 경우와 같은 몇 가지 예외적인 공격 시나리오로부터 보호하기 위해 존재합니다.
PASSWORD_HASHERS
¶비밀번호를 저장하는 방법에 대한 자세한 내용은 Django가 비밀번호를 저장하는 방법을 참조하세요.
기본값:
[
"django.contrib.auth.hashers.PBKDF2PasswordHasher",
"django.contrib.auth.hashers.PBKDF2SHA1PasswordHasher",
"django.contrib.auth.hashers.Argon2PasswordHasher",
"django.contrib.auth.hashers.BCryptSHA256PasswordHasher",
]
AUTH_PASSWORD_VALIDATORS
¶기본값: []
(빈 목록)
사용자의 비밀번호 강도를 확인하는 데 사용되는 유효성 검사기의 목록입니다. 자세한 내용은 비밀번호 유효성 검사를 참조하세요. 기본적으로 유효성 검사가 수행되지 않으며 모든 비밀번호가 허용됩니다.
¶](https://docs.djangoproject.com/en/4.2/ref/settings/#messages)
django.contrib.messages
에 대한 설정입니다.
MESSAGE_LEVEL
¶기본값: messages.INFO
메시지 프레임워크에서 기록될 최소 메시지 수준을 설정합니다. 자세한 내용은 메시지 수준을 참조하세요.
원형 가져오기 회피
설정 파일에서 MESSAGE_LEVEL
을 재정의하고 내장 상수 중 하나를 의존하는 경우, 순환 가져오기 가능성을 피하기 위해 직접 상수 모듈을 가져와야 합니다. 예를 들어:
from django.contrib.messages import constants as message_constants
MESSAGE_LEVEL = message_constants.DEBUG
원하는 경우, 위의 상수 표의 값에 따라 직접 상수의 숫자 값을 지정할 수 있습니다.
MESSAGE_STORAGE
¶기본값: 'django.contrib.messages.storage.fallback.FallbackStorage'
Django가 메시지 데이터를 저장하는 위치를 제어합니다. 유효한 값은 다음과 같습니다:
'django.contrib.messages.storage.fallback.FallbackStorage'
'django.contrib.messages.storage.session.SessionStorage'
'django.contrib.messages.storage.cookie.CookieStorage'
자세한 내용은 메시지 저장 백엔드를 참조하세요.
쿠키를 사용하는 백엔드(CookieStorage
및 FallbackStorage
)는 쿠키 설정 시 SESSION_COOKIE_DOMAIN
, SESSION_COOKIE_SECURE
, SESSION_COOKIE_HTTPONLY
값을 사용합니다.
MESSAGE_TAGS
¶기본값:
{
messages.DEBUG: "debug",
messages.INFO: "info",
messages.SUCCESS: "success",
messages.WARNING: "warning",
messages.ERROR: "error",
}
이는 메시지 수준과 메시지 태그 간의 매핑을 설정합니다. 일반적으로 HTML에서 CSS 클래스로 렌더링됩니다. 값을 지정하면 기본값을 확장합니다. 따라서 덮어쓸 값만 지정하면 됩니다. 자세한 내용은 메시지 표시를 참조하세요.
원형 가져오기 회피
설정 파일에서 MESSAGE_TAGS
를 재정의하고 내장 상수 중 하나를 의존하는 경우, 순환 가져오기 가능성을 피하기 위해 constants
모듈을 직접 가져와야 합니다. 예를 들어:
from django.contrib.messages import constants as message_constants
MESSAGE_TAGS = {message_constants.INFO: ""}
원하는 경우, 위의 상수 표의 값에 따라 직접 상수의 숫자 값을 지정할 수 있습니다.
django.contrib.sessions
에 대한 설정입니다.
SESSION_CACHE_ALIAS
¶기본값: 'default'
캐시 기반 세션 저장소를 사용하는 경우 사용할 캐시를 선택합니다.
SESSION_COOKIE_AGE
¶기본값: 1209600
(2주, 초 단위)
세션 쿠키의 수명(초 단위)입니다.
SESSION_COOKIE_DOMAIN
¶기본값: None
세션 쿠키에 사용할 도메인입니다. 이를 크로스-도메인 쿠키에 사용하려면 "example.com"
과 같은 문자열을 설정하거나, 표준 도메인 쿠키에 사용하려면 None
을 사용합니다.
크로스-도메인 쿠키를 CSRF_USE_SESSIONS
와 함께 사용하려면 (예: CSRF 미들웨어의 리퍼러 확인) 앞에 마침표(".example.com"
)를 포함해야 합니다.
프로덕션 사이트에서 이 설정을 업데이트할 때 주의하세요. 이전에 표준 도메인 쿠키를 사용하던 사이트에 크로스-도메인 쿠키를 활성화하도록 이 설정을 업데이트하면 기존 사용자 쿠키가 이전 도메인으로 설정될 수 있습니다. 이로 인해 해당 쿠키가 유지되는 동안 로그인할 수 없는 문제가 발생할 수 있습니다.
이 설정은 또한 django.contrib.messages
에서 설정한 쿠키에도 영향을 미칩니다.
SESSION_COOKIE_HTTPONLY
¶기본값: True
세션 쿠키에 HttpOnly
플래그를 사용할지 여부를 지정합니다. 이 값이 True
로 설정된 경우, 클라이언트 측 JavaScript는 세션 쿠키에 접근할 수 없습니다.
HttpOnly는 Set-Cookie HTTP 응답 헤더에 포함되는 플래그입니다. 이것은 쿠키에 대한 RFC 6265#section-4.1.2.6 표준의 일부이며, 클라이언트 측 스크립트가 보호된 쿠키 데이터에 접근하는 위험을 완화하는 유용한 방법일 수 있습니다.
이로 인해 공격자가 사이트 간 스크립팅 취약점을 사용하여 사용자 세션을 완전히 탈취하는 것이 어려워집니다. 이를 비싼 비밀번호 유출로 전환하는 공격자의 노력을 줄여줍니다. 이를 끄는 것에 대한 많은 합당한 이유는 없습니다. 코드에서 JavaScript로 세션 쿠키를 읽어서는 안 됩니다.
SESSION_COOKIE_NAME
¶기본값: 'sessionid'
세션에 사용할 쿠키의 이름입니다. 이는 다른 쿠키 이름과 달라야 합니다.
SESSION_COOKIE_PATH
¶기본값: '/'
세션 쿠키에 설정된 경로입니다. 이는 Django 설치의 URL 경로와 일치하거나 해당 경로의 부모가 되어야 합니다.
이 설정은 동일한 호스트 이름 아래에서 여러 Django 인스턴스를 실행하는 경우 유용합니다. 각 인스턴스는 다른 쿠키 경로를 사용할 수 있으며, 각 인스턴스는 자체 세션 쿠키만 볼 수 있습니다.
SESSION_COOKIE_SAMESITE
¶기본값: 'Lax'
세션 쿠키의 SameSite 플래그 값입니다. 이 플래그는 쿠키가 크로스-사이트 요청에서 보내지 않도록 하여 CSRF 공격을 방지하고 세션 쿠키 도용의 일부 방법을 막습니다.
이 설정의 가능한 값은 다음과 같습니다:
'Strict'
: 일반 링크를 따를 때에도 브라우저가 쿠키를 대상 사이트로 보내지 않도록 모든 크로스-사이트 브라우징 컨텍스트에서 쿠키를 보내는 것을 방지합니다.
예를 들어, GitHub와 유사한 웹사이트의 경우 로그인한 사용자가 기업 논의 포럼이나 이메일에 게시된 사설 GitHub 프로젝트로의 링크를 따르는 경우, GitHub는 세션 쿠키를 받지 못하고 사용자는 해당 프로젝트에 액세스할 수 없습니다. 그러나 은행 웹사이트 같은 경우, 외부 사이트에서 트랜잭션 페이지를 링크할 수 없도록 하려면 'Strict'
플래그가 적절합니다.
'Lax'
(기본값): 사용자가 외부 링크로부터 도착한 후에도 사용자의 로그인 세션을 유지하기 위한 웹사이트의 보안과 사용성 사이의 균형을 제공합니다.
GitHub 시나리오에서는 외부 웹사이트에서 일반 링크를 따를 때 세션 쿠키가 허용되며 CSRF 취약한 요청 방법(POST
등)에서 차단됩니다.
'None'
(문자열): 세션 쿠키는 모든 동일 사이트 및 크로스-사이트 요청과 함께 전송됩니다.
False
: 플래그를 비활성화합니다.
참고
현대 브라우저는 SameSite
플래그에 대한 보다 안전한 기본 정책을 제공하며 명시적으로 설정되지 않은 경우에는 Lax
로 가정합니다.
SESSION_COOKIE_SECURE
¶기본값: False
세션 쿠키에 안전한 쿠키를 사용할지 여부를 지정합니다. 이 값을 `
True`로 설정하면 쿠키가 "안전"으로 표시되며, 즉 브라우저가 쿠키가 HTTPS 연결 아래에서만 전송되도록 보장할 수 있습니다.
이 설정을 비활성화하는 것은 좋은 생각이 아닙니다. 공격자가 패킷 스니핑을 사용하여 암호화되지 않은 세션 쿠키를 포착하고 해당 쿠키를 사용하여 사용자 세션을 탈취할 수 있습니다.
SESSION_ENGINE
¶기본값: 'django.contrib.sessions.backends.db'
Django가 세션 데이터를 저장하는 위치를 제어합니다. 포함된 엔진은 다음과 같습니다:
'django.contrib.sessions.backends.db'
'django.contrib.sessions.backends.file'
'django.contrib.sessions.backends.cache'
'django.contrib.sessions.backends.cached_db'
'django.contrib.sessions.backends.signed_cookies'
더 많은 정보는 세션 엔진 설정을 참조하세요.
SESSION_EXPIRE_AT_BROWSER_CLOSE
¶기본값: False
사용자가 브라우저를 닫을 때 세션을 만료할지 여부를 지정합니다. 브라우저 길이 세션 대 영구 세션을 참조하세요.
SESSION_FILE_PATH
¶기본값: None
파일 기반 세션 저장소를 사용하는 경우 Django가 세션 데이터를 저장할 디렉토리를 설정합니다. 기본 값(None
)을 사용하는 경우 Django는 시스템의 표준 임시 디렉토리를 사용합니다.
SESSION_SAVE_EVERY_REQUEST
¶기본값: False
모든 요청에서 세션 데이터를 저장할지 여부를 지정합니다. 이 값이 False
로 설정된 경우, 세션 데이터는 수정된 경우에만 저장됩니다. 딕셔너리 값 중 하나가 할당되거나 삭제되었을 때만 세션 데이터가 저장됩니다. 비어 있는 세션은 생성되지 않습니다.
SESSION_SERIALIZER
¶기본값: 'django.contrib.sessions.serializers.JSONSerializer'
세션 데이터를 직렬화하는 데 사용할 직렬화 클래스의 전체 가져오기 경로입니다. 포함된 직렬화기는 다음과 같습니다:
'django.contrib.sessions.serializers.JSONSerializer'
세션 직렬화에 대한 자세한 내용은 세션 직렬화를 참조하세요.