【问题标题】:connect mqtt broker to web in the same server将 mqtt 代理连接到同一服务器中的 Web
【发布时间】:2020-07-03 15:51:12
【问题描述】:

我有一个项目,我有一些树莓派通过 mqtt 发布和订阅数据连接到代理,该代理位于远程服务器中。 我想制作一个网页,我们可以在其中与经纪人互动,发布和订阅,网络也可以托管在同一台服务器上。

我正在考虑使用 paho 库、websockets 和 tls 证书连接到代理。网络将在 php(laravel 框架)中,并带有用户身份验证。 最后,我们必须登录网站并访问一些主题。

我的问题是关于安全性、javascript 和 websockets。由于用户可以访问 javascript 代码,因此他可以访问源代码以及我们用来连接服务器的用户名和密码。

在安全方面是否正确?我们将使用 tls、web authentification 和 websockets。

我正在考虑使用 php 库而不是 websockets 来访问主题,但在这种情况下,所有 cennection 的负载都将在服务器中,我认为这不是正确的方法。另外,我不知道如何在 Web 界面运行时保持后台 php 脚本为订阅运行。

我需要做更多的事情来提高安全性吗?

感谢您的帮助!!

【问题讨论】:

    标签: php security websocket mqtt paho


    【解决方案1】:

    您无需将 MQTT 凭据硬编码到 javascript 中。

    如果您将代理配置为使用数据库来存储其凭据,您可以创建临时凭据,当用户登录网页时可以将其插入数据库,然后您可以从 Web 服务器检索这些凭据并使用它们使用 paho 客户端连接到代理。

    然后,您可以在用户注销或会话到期时删除凭据。

    【讨论】:

    • 好的,谢谢,这听起来是个好主意,似乎很容易实现,有没有使用数据库密码的插件?
    • 可能,但你没有说你使用的是什么经纪人
    • 我的经纪人是蚊子
    【解决方案2】:

    让我们考虑两种情况:

    1. MQTT Broker 对公共互联网隐藏,只有 Web 服务器可以访问它。
    2. MQTT Broker 暴露在公共互联网上,用户代理正在被发送凭据来操作它。

    请注意,2 大大提高了攻击面。实际上,您不仅开始依赖 Web 服务器的正确配置,还依赖 MQTT 代理(双重麻烦)。如果有零天怎么办?你想让 Shodan 知道你在那里有服务吗?你会在不知不觉中被黑客入侵。

    在企业现实中,第 2 点是不可行的。如果我们可以防止 MQTT Broker 被暴露,我们会这样做。在您的项目中 - 由您决定。

    【讨论】:

    • 我的物联网设备是通过互联网使用 tls1.2 连接到代理的。我在想的是制作一个网络应用程序,用户可以访问他们的设备(pub + sub)。会不会有问题?我真的不知道场景是否类似于场景 2 :(
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-08-05
    • 2021-10-21
    • 2021-03-29
    • 2015-02-22
    相关资源
    最近更新 更多