웹 프로그래밍

[pinterest clone (4)] SECRET_KEY에 대해서

728x90
반응형

settings.py를 보면 SECRET_KEY라는게 있다. 노출되면 장고의 보안기능이 상실될 위험이 있다.

깃허브에 올려서 관리를 하려는데 다올려서 secret_key가 노출되면 안될 것 아닌가.

 

1. .gitignore 파일을 만들자

git에서 추적을 하지않을 것들을 등록할 것이다.

 

github.com/github/gitignore/blob/master/Global/JetBrains.gitignore

 

github/gitignore

A collection of useful .gitignore templates. Contribute to github/gitignore development by creating an account on GitHub.

github.com

pycharm 쓰고있어서 이걸 붙여 넣을 것이다. 만들면 이제 .gitignore에 등록된 것들은 추적하지 않게된다.

 

2. SECRET_KEY를 따로 관리하자

이것도 라이브러리가 이미 있다.

django-environ.readthedocs.io/en/latest/

 

Welcome to Django-environ’s documentation! — Django-environ 0.4.4 documentation

Value from environment or default (if set)

django-environ.readthedocs.io

시키는대로 하면된다.

 

a) pip install django-environ 으로 설치하고

b) 복사해서 settings.py에 붙여줬다

import environ
env = environ.Env(
    # set casting, default value
    DEBUG=(bool, False)
)
# reading .env file
environ.Env.read_env()

c) .env 파일 만들기

DEBUG=on
SECRET_KEY=your-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

여기 보안키 넣어주면 된다

 

d) 완성

from pathlib import Path
import environ, os
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(
    env_file=os.path.join(BASE_DIR, '.env')
)


# Quick-start development settings - unsuitable for production
# See https://docs.djangoproject.com/en/3.2/howto/deployment/checklist/

# SECURITY WARNING: keep the secret key used in production secret!
SECRET_KEY = env('SECRET_KEY')

e) 이제 .env를 .gitignore에 추가해주면 된다.

 

728x90
반응형