【问题标题】:it is secure to have a plain text password for my PostgreSQL connection in Django?在 Django 中为我的 PostgreSQL 连接设置纯文本密码是否安全?
【发布时间】:2020-05-05 06:59:02
【问题描述】:

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

【问题讨论】:

    标签: python django django-settings


    【解决方案1】:

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

    【讨论】:

    • 感谢您的解释和帮助,非常感谢。
    【解决方案2】:

    你可以使用环境变量:

    设置

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2012-09-09
      • 1970-01-01
      • 2011-05-18
      • 1970-01-01
      • 2020-03-28
      • 1970-01-01
      • 1970-01-01
      • 2021-03-13
      相关资源
      最近更新 更多