首页 > 解决方案 > Django,Dash App 保存数据库凭证最安全的地方

问题描述

我是网络开发的新手。我有一个 Django 项目,它在其中一个页面上加载了一个 Dash 应用程序。dash 应用程序生成一个图表,允许用户从数据库中选择某些数据集。

直接在我的 App.py(dash 应用程序)中,我放置了我的 sqlalchemy 数据库连接变量,其中一个回调用于在请求时获取数据。

sqlEngine = sa.create_engine('mysql+pymysql://host:password@127.0.0.1:3306/db', pool_recycle=3600)
dbConnection = sqlEngine.connect()
conn = pymysql.connect(host='127.0.0.1',user='host',password='password',db='db')
cursor = conn.cursor()

app = DjangoDash(name='app', add_bootstrap_links=True, serve_locally = False)

...

@app.callback(...)
def fetch_data(...):
    select = """SELECT * FROM `db`.`table`;"""
    df = pd.read_sql(select, dbConnection)
    

我不确定这在生产环境中是否安全。连接到仪表板应用程序内部数据库的最佳/最安全方法是什么。

我的 Django 应用程序也连接到数据库进行迁移。感谢您提供任何帮助/建议。

标签: djangosqlalchemyplotly-dashpymysql

解决方案


Django 文档中,它说你不应该提交你的密钥,所以你可以将它保存在一个单独的文件中并从那里读取它。再次在文档中说您应该以相同的方式处理数据库凭据。因此,我建议您将它们保存在一个文件中并从那里读取它,而不是通过导入而是通过使用 open 就像他们在文档中所做的那样,或者将其设置为环境变量。


推荐阅读