我想知道我的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文件中并且只是导入它之外,还没有找到任何其他方法。哪种感觉就像什么都不做..有没有更好的方法来明智地做到这一点?
然后我使用密钥进行密码编码。哪个也只是在我的代码中以纯文本形式存储,是否还有一种方法可以使其更安全或使其不那么明显?
提前致谢!
答案 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 文件)获取这些信息。