使用python访问PostgreSQL数据库的安全方法

时间:2019-04-22 14:21:17

标签: python database postgresql security

因此,我有一个执行基本数据库操作的Flask Web应用程序。我正在使用PostgreSQL数据库。我正在使用psycopg2来访问它。这是用于检索我的数据的代码段。

select k.id, count(t.in)  from tab1 k left outer join tab2 t on t.in= k.id group by k.id;

那不是我的确切代码,但可以证明我的问题。如您所见,任何有权访问我的服务器代码的人都可以看到我的数据库密码和用户名。但是我不认为在程序内写入数据库密码是一种安全的方法!所以我希望有人可以指出任何其他方式。像Google和Facebook这样的专业网络应用程序是如何做到的?

2 个答案:

答案 0 :(得分:2)

您可能会想到的一件事是environment variables,它将使您能够在其环境中而不是代码本身中定义秘密值。在python中,您可以使用os.environ.get("variablename")访问环境; here提供了在python中使用它们的完整教程。这是选择用于管理机密的服务的数量,并且是heroku等服务的默认设置。

答案 1 :(得分:1)

我最近正在学习烧瓶,并且有这个问题。我最终使用了一个json“秘密”文件来保存登录信息以及秘密密钥。

secretfiles.json

  {
  "web": {
    "app_id": "randomlongid",
    "app_secret": "randomlongkey",
    "user_name": "ausername",
    "user_pw": "randompassword"
  }
}

然后我将其导入到我的应用中。

import json
import psycopg2

MY_PASS = json.loads(open('secretfiles.json', 'r').read())['web']['user_pw']

connection = psycopg2.connect(user="sysadmin",
                                  password=MY_PASS,
                                  host="127.0.0.1",
                                  port="5432",
                                  database="myData")


然后我将文件名或仅将*.json添加到我的.gitignore

但是,我一直在寻找有关使用环境变量(例如刚刚链接的一个infobiac)的很好的解释,所以我很可能会继续使用该方法。