Python 在flask中存储mysql服务器凭据的安全方法?

Python 在flask中存储mysql服务器凭据的安全方法?,python,mysql,security,flask,secret-key,Python,Mysql,Security,Flask,Secret Key,我想知道我的app.py flask app中某些东西的安全性。首先是数据库,我正在使用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['MYS

我想知道我的app.py flask app中某些东西的安全性。首先是数据库,我正在使用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文件中并导入它之外,没有找到任何其他方法。那种感觉就像什么都不做。。有没有更好的方法在安全方面做到这一点

然后是我用于密码编码的密钥。在我的代码中,它也是以纯文本的形式存储的,有没有办法使它更安全或不那么明显


提前谢谢

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


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

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

app.config['MYSQL\u HOST']=os.environ.get('HOST'))
app.config['MYSQL\u USER']=os.environ.get('USER'))
app.config['MYSQL\u PASSWORD']=os.environ.get('PASSWORD')
app.config['MYSQL\u DB']=os.environ.get('DB'))
app.config['MYSQL\u CURSORCLASS']='DictCursor'

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

MySQL凭据在编程语言中始终为纯文本。问题是当Peple可以通过使用Deflisher(java、flash和flex)或者反汇编程序(C,C++,C,…,VB…)来反编译你的软件,并找出你的MySQL证书。黄金法则如果有人可以访问你的程序,你应该公开一个API协议(REST、XMLRPC、SOAP)或一个服务器-客户机(Socket)接口来向MySQL服务器传输数据。然后您将MySQL凭据始终保留在服务器端。这应该是一个答案!保留mysql服务器端并构建API来访问它。