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

本地运行的python dash应用程序对敏感数据是否安全?,python,plotly,dashboard,plotly-dash,Python,Plotly,Dashboard,Plotly Dash,我创建了一个Python Dash仪表板,以交互方式显示敏感的客户数据。我通过笔记本电脑上的本地主机使用仪表板。 我正在初始化并运行应用程序,如下所示: app = dash.Dash(__name__) if __name__ == "__main__": app.run_server(debug = True) 仪表板的数据是否可以被其他人访问,还是只能从我的机器访问?Dash是一个Python框架,构建在Flask、Plotly.js、React和React

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

app = dash.Dash(__name__)

if __name__ == "__main__":
    app.run_server(debug = True)

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

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

根据说明,
localhost
上的开发服务器不能从主机外部访问,除非明确配置为这样做

最简单的Dash应用程序通常由一个Python文件组成,最后有以下样板代码:

if __name__ == '__main__':
    app.run_server(debug=True)
通过添加主机参数,可以修改此样板文件,以允许网络上的其他设备访问本地托管的开发服务器,如下所示:

if __name__ == '__main__':
    app.run_server(debug=True, host='0.0.0.0')
我在我的机器上创建了一个演示仪表板来测试这一点

起初,我没有更改我电脑的防火墙配置,无法从另一台计算机访问该网页

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

假设您没有配置防火墙,并且您正在使用Flask development server而不是生产服务器运行应用程序,并且您没有接触Flask dev server的配置,那么您就可以了

在对主机参数进行更改后,我只能使用dev服务器访问应用程序。否则,将无法访问dash网页

编辑:

按照马特在回答中所说的--

提问者在会议中使用破折号来展示结果

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


如果您处理的数据异常敏感,那么如果可能的话,最好只携带运行仪表板所需的聚合数据。

这取决于您对“安全”的定义。如果是“有人能把他们的浏览器指向我的IP并访问它吗”,那么很可能是的,它是安全的;但它并不安全,不会受到其他攻击

你有没有想过如何“用谷歌登录”到其他网站并看到你的谷歌头像?这是因为一个网站经常可以向谷歌请求信息。谷歌需要经常明确地说“不,你的浏览器不能在访问攻击者网站时向Google.com发出请求,但可以。”

flask或dash也是一样,它实际上是一项功能,也是为什么您可以在企业网站中“嵌入”dash的原因

现在,如果我创建一个网站,当你加载一个页面时http://localhost:8050/ 如果您访问此网站,请通过javascript将数据发送给我。我可能会过滤你的数据

你会特意访问这样的网站吗?可能不会。您是否信任您在线访问的所有网站,并且从未在流媒体网站上错误点击过显示DMCA保护内容的网站?可能不太确定

所以,如果你有非常敏感的数据,没有破折号是不安全的;仅凭自身还不够。

“本地运行的python dash应用程序对敏感数据安全吗?”

在很大程度上,最佳答案取决于您的操作系统

如果您使用的是XP Pro(32位)和sp2以外的任何Microsoft Windows操作系统,或XP Pro(64位)和sp1以外的任何Microsoft Windows操作系统,或Windows 7(32位或64位)和sp0以外的任何Microsoft Windows操作系统,则不会


我预计这项议案将被否决。但是,事实就是事实,如果您不喜欢它,那么它仍然是事实。

尝试使用您的网络IP地址而不是本地主机访问web应用程序谢谢您的回复@我不熟悉这个话题。我将如何使用我的网络IP访问应用程序?这是为了检查是否有任何随机的人可以访问该站点?您网络上的人可以使用您的IP地址访问您主机上运行的任何服务,因此,当您通过IP输入时,您是在模拟网络访问,而不是本地访问。@Husseinfo您是否愿意对您的评论做一个完整的示例,并将其作为问题发布。类似于
“不,它不安全,因为…”
?感谢您的全面回复@Cerberton我只是想为演示和试用dash可视化一些交互式python数据分析。所以我想确保我没有公开输出数据。我还试着像这样访问仪表板:http://::。这并没有得到回应。这是测试公共访问的有效方法吗?你是如何测试公众可访问性的?嗨,亨利,令人兴奋的东西-你肯定为这份工作选择了一个好工具。你应该很好。关于公共访问-默认情况下,Windows防火墙会阻止这些端口,如果您从未从笔记本电脑托管过live web服务器,那么这些端口应该关闭,您就没事了。如果你真的很担心,那么你可以打开Windows防火墙(我假设你的机器有Windows防火墙),方法是转到具有高级安全性的Windows Defender防火墙,查看入站和出站规则,阻止python的任何连接。exeI将检查Windows Defender设置,看看我能找到什么。谢谢你花这么多时间详细回答我的问题!我真的很感激,因为我是python数据分析旅程开始时的一名学生:)请务必小心,即使ip只能从本地机器访问,dash也可能容易受到跨站点请求和数据过滤的影响。例如,这就是为什么其他本地应用程序(如jupyter)在启动服务器时要求您提供令牌的原因。可能吧