本地运行的 python dash 应用程序对于敏感数据是否安全?

Hen*_*nri 5 python dashboard plotly plotly-dash

我创建了一个 Python Dash 仪表板来交互式显示敏感的客户数据。我在笔记本电脑上通过本地主机使用仪表板。我正在初始化并运行应用程序,如下所示:

app = dash.Dash(__name__)

if __name__ == "__main__":
    app.run_server(debug = True)
Run Code Online (Sandbox Code Playgroud)

仪表板的数据是否可以被其他人访问或者只能从我的机器访问?

Cer*_*ton 5

Dash 是一个构建在 Flask、Plotly.js、React 和 React Js 之上的 Python 框架。

根据Flask 官方文档,除非明确配置,localhost否则无法从主机外部访问开发服务器。

最简单的 Dash 应用程序通常由一个 Python 文件组成,并在末尾包含以下样板代码:

if __name__ == '__main__':
    app.run_server(debug=True)
Run Code Online (Sandbox Code Playgroud)

可以修改此样板以允许网络上的其他设备通过添加主机参数来访问本地托管的开发服务器,如下所示:

if __name__ == '__main__':
    app.run_server(debug=True, host='0.0.0.0')
Run Code Online (Sandbox Code Playgroud)

我在我的机器上创建了一个演示 Dash 仪表板来测试这一点。

起初,我没有对我的电脑的防火墙配置进行任何更改,并且无法从另一台计算机访问该网页。

通常,当新应用程序尝试在 Windows 上公开端口时,您会收到安全警报(假设您使用的是标准防火墙,但其他防火墙的行为方式大致相同):

Windows 安全警报

假设您尚未配置防火墙,并且您正在使用 Flask 开发服务器而不是生产WSGI 服务器运行应用程序,并且您还没有触及 Flask 开发服务器的配置,那么就没有问题。

只有在对主机参数进行更改后,我才能使用开发服务器访问该应用程序。否则将无法访问仪表板网页。

编辑:

按照马特在回答中所说的话——

提问者正在dash会议上展示结果。

假设您仅在会议期间运行仪表板,并且您的设备没有主动受到攻击,并且您始终控制着设备,通常情况下应该没问题。如果您担心受到本地网络的攻击,请不要连接到任何网络。

如果您正在处理的数据极其敏感,那么明智的做法是仅携带运行仪表板所需的聚合数据(如果可能)。

  • 谢谢您的全面回复!@Cerberton我只是想可视化一些交互式Python数据分析以进行演示并尝试了dash。所以我想确保我没有公开输出数据。我还尝试像这样访问仪表板: http://<myPublicIp>:<port> 。这并没有产生回应。这是测试公共访问的有效方法吗?您如何测试公众可访问性? (2认同)