GitHub의 Django에서 민감한 정보 보호

Vaibhav Vaibhav 2021년6월29일
GitHub의 Django에서 민감한 정보 보호

프로젝트와 소프트웨어를 구축하고 GitHub에서 전 세계와 공유하는 것은 재미 있고 흥미로운 과정입니다. 우리는 애플리케이션에 흥미롭고 매력적인 기능을 추가하고 git을 사용하여 코드를 GitHub에 푸시하고자합니다. 그러나 때때로 우리는 소프트웨어 개발의 가장 중요한 측면 중 하나 인 보안을 잊어 버리는 경향이 있습니다.

소프트웨어를 구축 할 때 우리는 소프트웨어가 안전하고 데이터 유출에 대한 잠재적 인 허점이 없는지 확인해야합니다.

웹 프레임 워크 인 Django는 강력한 보안을 제공합니다. Django의 인증 시스템은 강력합니다. Django에는 대부분의 민감한 데이터가있는settings.py가 있습니다. 따라서 이러한 파일을 GitHub에 저장하는 것은 위험한 결정이 될 수 있습니다.

하지만 걱정하지 마세요. GitHub에 코드를 푸시하는 동시에 안전을 보장하는 몇 가지 방법이 있습니다.

환경 변수를 사용하여 Django의 민감한 정보 보호

환경 변수는 값이 프로그램 외부에 저장되는 일부 변수이며 정보에 액세스하기 위해 프로그램에서 읽습니다. 이러한 변수는.env파일에 저장됩니다.

먼저.env파일을 만듭니다. 그런 다음.gitignore파일에.env를 추가합니다. 이렇게 추가하면.env파일이 GitHub에 업로드되지 않습니다.

이제 이러한 파일을 처리하려면 Python 패키지가 필요합니다. 패키지 이름은Decouple입니다. 다음pip명령을 사용하여 패키지를 설치합니다.

pip install python-decouple

또는,

pip3 install python-decouple

.env파일에 민감한 정보를 추가하십시오. 이 정보는 Django 프로젝트 비밀 키, 데이터베이스 자격 증명, 이메일 ID 및 비밀번호, API 키 등이 될 수 있습니다. Decouple Python 패키지는 Django 프로젝트 내에서이 파일을 자동으로 찾습니다.

다음과 같은 방법으로 정보를 저장하십시오. 동일한 구문을 따르는 지 확인하십시오.=기호 앞뒤에 공백이 포함되지 않고 문자열을 표시하기 위해 인용 부호가 추가되지 않습니다.

SECRET_KEY=abcdefghijklmnopqrstuvwxyz0123456789
DEBUG=True
DATABASE_NAME=HELLO_DJANGO
DATABASE_USERNAME=U_HELLO
DATABASE_PASSWORD=hA8(scA@!fg3*sc&xaGh&6%-l<._&xCf
DATABASE_HOST=127.0.0.1
DATABASE_PORT=127.0.0.1
WASD_API_KEY=abcdefghijklmnopqrstuvwxyz0123456789
PQRS_API_KEY=abcdefghijklmnopqrstuvwxyz0123456789
EMAIL=qwerty@wasd.com
PASSWORD=abcdefghijklmnopqrstuvwxyz0123456789

위에서 언급했듯이 우리는 일반적으로 모든 민감한 데이터를settings.py파일에 보관해야합니다. 여기서도 동일한 작업을 수행하지만 값을 직접 추가하지는 않습니다. 방금 생성 한.env에서 해당 정보를 읽습니다.

settings.py내에서 다음과 같이 위의 값을 검색 할 수 있습니다.

import os
from decouple import config

BASE_DIR = os.path.dirname(os.path.dirname(os.path.abspath(__file__)))
SECRET_KEY = config("SECRET_KEY")  # Here
DEBUG = config("DEBUG", cast=bool)  # Here
DATABASES = {
    "default": {
        "ENGINE": "django.db.backends.postgresql_psycopg2",
        "NAME": config("DATABASE_NAME"),  # Here
        "USER": config("DATABASE_USERNAME"),  # Here
        "PASSWORD": config("DATABASE_PASSWORD"),  # Here
        "HOST": config("DATABASE_HOST"),  # Here
        "PORT": config("DATABASE_PORT", cast=int),  # Here
    }
}
WASD_API_KEY = config("WASD_API_KEY")
PQRS_API_KEY = config("PQRS_API_KEY")
EMAIL = config("EMAIL")
PASSWORD = config("PASSWORD")

config에는 값을 캐스트해야하는 데이터 유형을 정의하는cast 매개 변수가 있습니다. 기본적으로 Decouple은 모든 값을 문자열로 읽습니다. 따라서이cast 매개 변수를 사용하여 값을 원하는 데이터 유형으로 캐스팅 할 수 있습니다.

그게 다야. 이제 모든 민감한 데이터는.env파일에 안전하며이 파일을 GitHub에 업로드하지 않는 한 정보는 안전합니다. 또한 변수가 이전에 있던 곳에 그대로 있기 때문에 프로젝트도 중단되지 않습니다. 변경된 유일한 것은 값을 할당하는 방식입니다.

Vaibhav Vaibhav avatar Vaibhav Vaibhav avatar

Vaibhav is an artificial intelligence and cloud computing stan. He likes to build end-to-end full-stack web and mobile applications. Besides computer science and technology, he loves playing cricket and badminton, going on bike rides, and doodling.