это безопасно иметь простой текстовый пароль для моего PostgreSQL соединения в Django? - PullRequest
1 голос
/ 18 января 2020

Я не уверен, что небезопасно иметь простой текстовый пароль для моего PostgreSQL соединения с базой данных.

т.е.

В моем " settings.py"file:

DATABASES = {
    'default': {
        'ENGINE': 'django.db.backends.postgresql_psycopg2',
        'NAME': 'my_database', # database name
        'USER': 'username',    # P.user
        'PASSWORD': 'plaintext password goes here',
        'HOST': 'localhost',  # where is locate our database?
        'PORT': '',
    }
}

Если это не безопасно, пожалуйста, дайте больше информации о том, как справиться с этой ситуацией.

Примечание: я использую https для своей веб-страницы, но я ' Я просто хочу знать, должен ли я это защитить, даже если соединение локально.

Ответы [ 2 ]

1 голос
/ 18 января 2020

вы можете использовать переменные окружения:

set

os.environ["password"] = "your_password"

get

DATABASES = {
    'default': {
        'ENGINE': 'django.db.backends.postgresql_psycopg2',
        'NAME': 'my_database', # database name
        'USER': 'username',    # P.user
        'PASSWORD': os.environ["password"],
        'HOST': 'localhost',  # where is locate our database?
        'PORT': '',
    }
}
1 голос
/ 18 января 2020

Нет, хранить пароль в виде исходного текста небезопасно. Вы можете сделать свой проект открытым исходным кодом и забыть удалить пароль из репозитория, или вы можете скопировать код в вопрос SO :) и не удалять пароль. Поэтому лучше хранить пароль и другие секреты, например SECRET_KEY, в качестве переменной среды. Для этого вы можете использовать библиотеку python-dotenv. Таким образом, ваш файл settings.py будет выглядеть так:

from dotenv import load_dotenv
DATABASES = {
    'default': {
        'ENGINE': 'django.db.backends.postgresql_psycopg2',
        'NAME': 'my_database', # database name
        'USER': 'username',    # P.user
        'PASSWORD': os.environ.get('PASSWORD'),
        'HOST': 'localhost',  # where is locate our database?
        'PORT': '',
    }
}
...