在 Django 中为我的 PostgreSQL 连接设置纯文本密码是否安全?

it is secure to have a plain text password for my PostgreSQL connection in Django?

我不确定为我的 PostgreSQL 数据库连接设置纯文本密码是否不安全。

在我的“settings.py”文件中:

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,但我只是想知道即使连接是本地的,我是否也必须保护它。

不,将密码作为纯文本保存在源代码中是不安全的。您可能使您的项目开源并忘记从存储库中删除密码,或者您可以将代码复制到 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': '',
    }
}

你可以使用环境变量:

设置

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

得到

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': '',
    }
}