在烧瓶中存储mysql服务器凭证的安全方法?

时间:2017-12-08 12:05:15

标签: python mysql security flask secret-key

我想知道我的app.py烧瓶应用程序中某些东西的安全性。首先是数据库,我正在使用mysql,目前我正在通过以下方式连接它:

# Config MySQL
app.config['MYSQL_HOST'] = 'localhost'
app.config['MYSQL_USER'] = 'root'
app.config['MYSQL_PASSWORD'] = 'password'
app.config['MYSQL_DB'] = 'databasename'
app.config['MYSQL_CURSORCLASS'] = 'DictCursor'

对我而言,这感觉很奇怪,只是用纯文本等输入你的密码。我一直在网上搜索,但除了把它放在一个单独的python文件中并且只是导入它之外,还没有找到任何其他方法。哪种感觉就像什么都不做..有没有更好的方法来明智地做到这一点?

然后我使用密钥进行密码编码。哪个也只是在我的代码中以纯文本形式存储,是否还有一种方法可以使其更安全或使其不那么明显?

提前致谢!

2 个答案:

答案 0 :(得分:2)

运行代码的计算机需要知道密码,因此您无法保护计算机的所有者(如果不是您)。但是,如果您在源代码中使用密码,则很容易将其置于版本控制中,如果使用公共github,则很容易发生密钥发布。

作为替代方案,您可以将密码放在配置文件中(注意不要将其置于版本控制中,例如通过.gitignore),或者您可以使用环境变量。

答案 1 :(得分:0)

我建议将凭据存储在操作系统环境中。

app.config['MYSQL_HOST'] = os.environ.get('HOST')
app.config['MYSQL_USER'] = os.environ.get('USER')
app.config['MYSQL_PASSWORD'] = os.environ.get('PASSWORD')
app.config['MYSQL_DB'] = os.environ.get('DB')
app.config['MYSQL_CURSORCLASS'] = 'DictCursor'

它将帮助您从独立应用程序或作为 dockerized 应用程序(使用 docker 文件)获取这些信息。