장고 프로젝트를 생성하면, 메인 프로젝트에 settings.py가 자동으로 생성된다.
또한, 이 파일안에는 임의의 SECRET_KEY가 입력되어 있는데, 이 값은 데이터를 보호하는 역할을 하며, 이를 안전하게 유지해야한다고 한다.
그 이유는 키가 공개되어 있을 경우, 해당 키를 이용해서 서버를 조작할 수 있기 때문이다.
https://docs.djangoproject.com/ko/4.0/topics/signing/#protecting-the-secret-key
해당 경고는 Django 프로젝트의 Secret Key가 공개되어있기 때문에 github 저장소가 보안에 취약하다고 알려주는 것이다.
따라서, 지금부터 이를 어떻게 비공개 처리 하는지 알아보겠다.
DEBUG=on
SECRET_KEY=나의 시크릿 키 넣어주기
DATABASE_URL=psql://urser:un-githubbedpassword@127.0.0.1:8458/database
SQLITE_URL=sqlite:///my-local-sqlite.db
CACHE_URL=memcache://127.0.0.1:11211,127.0.0.1:11212,127.0.0.1:11213
REDIS_URL=rediscache://127.0.0.1:6379/1?
client_class=django_redis.client.DefaultClient&password=ungithubbed-secret
SECRET_KEY=django-insecure-*u@$^b=+(@t8^&f+kxyatvdgpgkwsw6h_gora_-d5#)y6xp=b1'
pip install django-environ
import os,environ
env = environ.Env(
# set casting, default value
DEBUG=(bool, False)
)
# Build paths inside the project like this: BASE_DIR / 'subdir'.
BASE_DIR = Path(__file__).resolve().parent.parent
# reading .env file
environ.Env.read_env()
SECRET_KEY = env('SECRET_KEY')
해당 과정은 따로 정리를 해두고, 프로젝트를 만들 때 즉시 적용하는 것이 좋다고 생각한다.
이미 프로젝트가 git에 업로드 되어있다면 과거 settings.py의 로그를 보고 secret_key를 공격자가 파악할 수 있을 것이다.