728x90
반응형
Django Secret Key exposed on GitHub!
장고 프로젝트를 GitHub에 올리면 이런 메일이 오게 된다.
secret key가 노출되었다는 뜻이다.
보안상의 이유로 이 키를 보이지 않도록 하는 것이 바람직하다는 내용이다.
SECRET_KEY는 무엇입니까?
SECRET_KEY는 Django의 보안에 아주 중요한 역할을 합니다.
Django 공식문서의 글을 참고하면,
- SECRET_KEY는 쿠키 데이터의 해시와 암호화 서명에 사용합니다.
django.contrib.sessions.backends.cache
가 아닌 다른 세션 백엔드 를 사용 중이거나 기본값get_session_auth_hash()
을 사용 중인 경우 모든 세션 입니다.CookieStorageFallbackStorage
를 사용하는 경우 모든 메시지.- 모든
PasswordResetView
. - 다른 키가 제공되지 않는 한 모든 암호화 서명 사용.
따라서 SECRET_KEY를 저장소에 올리지 않도록 별도로 설정 해 주어야 합니다.
SECRET_KEY 관리 방법
1. .gitignore
에 settings.py
를 추가하여 아예 업로드하지 않는다.
- 좋은 방법은 아닙니다.
settings.py
는 아예 업로드하지 않기에는 너무 많은 설정이 적용되어 있습니다.
2. key.json파일을 생성하여 별도로 관리한다.
key.json 생성
{
SECRET_KEY = "secret_key"
}
"secret_key"에는 본인 프로젝트의 시크릿 키를 넣습니다.key.json
파일은 manage.py
파일과 같은 위치에 있어야 합니다.
settings.py 변경
기존 코드
SECRET_KEY = "secretkey1234"
변경한 코드
import os, json
secret_file = os.path.join(BASE_DIR, 'key.json') # 베이스 디렉토리의 키 파일을 불러옵니다.
with open(secret_file) as f:
secrets = json.loads(f.read()) # 해당 json파일을 읽어들입니다.
def get_secret(setting, secrets=secrets):
try:
return secrets[setting] # 지정된 키 값을 가져옵니다.
except KeyError:
error_msg = "Set the {} environment variable".format(setting)
raise error_msg
SECRET_KEY = get_secret("SECRET_KEY") # 원래의 시크릿 키를 이렇게 대체합니다.
단, key.json파일은 GitHub 등 외부에 업로드하지 않도록 반드시 .gitignore
에 추가해야 합니다.
728x90
반응형
'Computer Science > Troubleshooting' 카테고리의 다른 글
[Android] ListView에 Adapter 적용하기 (1) | 2022.08.15 |
---|---|
[PHP] 데이터 값에 table HTML이 적용되어 있을 때 (0) | 2022.08.15 |
[Tomcat, Ubuntu] 파일/폴더 소유권자를 변경하는 명령어 (0) | 2022.08.14 |
[MySQL, MariaDB] Server Timezone KST 설정하기 (0) | 2022.08.14 |
[HTML] hidden 속성 사용방법 (0) | 2022.08.13 |