MQTT安全 - 如何防止滥用者订阅主题?

时间:2012-04-07 18:33:36

标签: android mqtt

我已经为MQTT设置了所有设置和工作。我正在使用IBM wmqtt.jar和Mosquitto代理..

My Java Servlet为代理创建一个MQTTConnection,并在“AndroidDeviceID / myAppName”主题下发布..

Android客户端订阅同一主题...

在我看来,如果有人知道我的用户的设备名称,他们可以创建一个简单的Android应用程序并在我的MQTT代理上订阅该主题。然后他们从我的用户那里获得所有通知(在这种情况下是即时消息消息)..

如何正确避免这种情况?

4 个答案:

答案 0 :(得分:16)

Mosquitto通过用户名和密码身份验证提供安全性,并限制对具有访问控制列表的主题的访问。 mosquitto.conf手册页中有详细信息:http://mosquitto.org/man/mosquitto-conf-5.html

答案 1 :(得分:6)

ACL限制订阅主题的客户,我使用auth-plugin这样做,这里是链接mosquitto auth plugin

答案 2 :(得分:3)

通常,MQTT保持安全性非常“轻”,因为它最初设计用于封闭的传感器网络。这取决于代理实现以提供例如SSL并决定如何处理用户名/密码后端。

消息数据的加密不太可能由协议本身提供,并且如果这是关键的话,通常在应用层完成。

答案 3 :(得分:2)

如果您需要更自定义的方式来处理访问控制和主题权限,请尝试使用HiveMQ MQTT代理。就像在文档中解释的那样,您可以使用插件实现自己的行为。这种方法允许您完全决定如何处理客户端,发布和订阅的身份验证和授权[1]。如果您有兴趣,可以在此处[2]描述开始使用自己的插件的最佳方式。

顺便说一下,为HiveMQ配置TLS也很容易[3]。

基督教 (HiveMQ团队)

[1] http://www.hivemq.com/docs/plugins/1.5.0/#auth-permission-chapter

[2] http://www.hivemq.com/documentations/getting-started-plugins/

[3] http://www.hivemq.com/docs/hivemq/1.5.0/#hivemqdocs_ssl_tls