MQTT套接字webclient连接安全问题

MQTT套接字webclient连接安全问题,mqtt,password-protection,mosquitto,paho,Mqtt,Password Protection,Mosquitto,Paho,我使用MQTT web客户端通过websocket连接到mosquitto MQTT代理。我使用mqttws31.js客户端js进行连接。连接正常,没有问题。 我使用地板代码 client=new Paho.MQTT.client(“iot.eclipse.org”,编号(80),“/ws”,“clientId”); client.connect({ onSuccess:onConnect, 用户名:“用户名”, 密码:“密码” });这是一个很难回答的问题,如果不了解您想要实现的目标的背景知

我使用MQTT web客户端通过websocket连接到mosquitto MQTT代理。我使用mqttws31.js客户端js进行连接。连接正常,没有问题。 我使用地板代码

client=new Paho.MQTT.client(“iot.eclipse.org”,编号(80),“/ws”,“clientId”);
client.connect({
onSuccess:onConnect,
用户名:“用户名”,
密码:“密码”

});这是一个很难回答的问题,如果不了解您想要实现的目标的背景知识,您将无法回答这个问题-应用程序是什么?您试图用MQTT服务器的用户名和密码保护什么

使用MD5不会“加密”密码-它只是执行到新字符串的单向转换。如果有人获得了MD5,那么他们仍然可以登录到MQTT服务器上的您的帐户


我怀疑答案是您应该使用用户自己的凭据登录到MQTT服务器——证明这就是他们。或者更好地使用特定于用户/会话的令牌(例如OAuth令牌),以证明他们是用户,但如果需要,可以撤销或刷新这些令牌。

这是一个很难回答的问题,没有您想要实现的背景知识-应用程序是什么?您试图用MQTT服务器的用户名和密码保护什么

使用MD5不会“加密”密码-它只是执行到新字符串的单向转换。如果有人获得了MD5,那么他们仍然可以登录到MQTT服务器上的您的帐户


我怀疑答案是您应该使用用户自己的凭据登录到MQTT服务器——证明这就是他们。或者更好地使用特定于用户/会话的令牌-例如OAuth令牌,证明他们是用户,但如果需要,可以撤销或刷新。

如果您确实必须只使用一个密码,那么最好从AJAX请求中提供用户名和密码,这样就不会将其存储在页面中。这些凭证也应该定期更改

这并不是什么真正的保护,因为任何人都可以发出相同的AJAX请求来获取凭据,但这确实意味着它们不能立即在src中可用


正如@njh所说的,每个用户最好使用自己独特的凭据登录,如果您真的必须只使用一个密码,那么您最好从AJAX请求中提供用户名和密码,这样它就不会存储在页面中。这些凭证也应该定期更改

这并不是什么真正的保护,因为任何人都可以发出相同的AJAX请求来获取凭据,但这确实意味着它们不能立即在src中可用


正如@njh所说的,每个用户都使用自己独特的凭据登录,我使用一个帐户为所有用户登录mqtt broker。我只更改客户端id以区分它们。Haw用户可以使用md5访问我的代理。他们必须解密密码才能连接到mqtt代理。如果我使用mqtt js文件,我必须在js中输入密码才能连接。也许你已经解决了,如果没有:据我所知,yoiu想对java隐藏密码,因为这实际上是我们对云代理的访问——在这种情况下,你需要构建一个代理桥,让你的每个用户都有自己的用户/密码。只要他们看到它并且连接是加密的,我就可以使用一个帐户为我的所有用户登录到mqtt代理。我只更改客户端id以区分它们。Haw用户可以使用md5访问我的代理。他们必须解密密码才能连接到mqtt代理。如果我使用mqtt js文件,我必须在js中输入密码才能连接。也许你已经解决了,如果没有:据我所知,yoiu想对java隐藏密码,因为这实际上是我们对云代理的访问——在这种情况下,你需要构建一个代理桥,让你的每个用户都有自己的用户/密码。只要他们看到它,并且连接是加密的,即使我让用户用他们自己的凭据签名,也应该是安全的。他们可以使用任何mqtt客户机连接到其他用户主题,甚至连接到brodcast+主题。为此,我不想允许他们连接到mosquitto。如果你设置ACL,那么给定的用户cna只能访问他们应该看到的主题,则不允许。谢谢你的回复,我找到了一个mosquitto auth插件,它可以使用mysql自动创建ACL。即使我允许用户使用自己的凭证签名,我也会为其他面临相同问题的用户做好我需要的工作。他们可以使用任何mqtt客户机连接到其他用户主题,甚至连接到brodcast+主题。为此,我不想允许他们连接到mosquitto。如果你设置ACL,那么给定的用户cna只能访问他们应该看到的主题,则不允许。谢谢你的回复,我找到了一个mosquitto auth插件,它可以使用mysql自动创建ACL。我会为其他面临同样问题的人做好我需要的工作。