我正在编程Android应用程序并希望定义房间。房间可以容纳某些游戏的所有用户。这就像有4名玩家的扑克,每个房间可容纳4名用户。我也想使用rabbitmq来实现可伸缩性和可定制性。问题是Android应用程序使用相同的用户名:密码将所有用户连接到RabbitMQ服务器(特定的虚拟主机)。RabbitMQ - 游戏室和安全注意事项
我想我担心的是一个用户可能能够从不同的队列,它应该读/写消息。有多种解决方案并不理想:
使用在每个Android应用程序不同的用户:这个真不能做,因为Android市场不允许用于下载它的每个用户不同的应用程序。无论如何,这是一个愚蠢的想法。
设置适当的访问控制:http://www.rabbitmq.com/access-control.html。我想这不会阻止恶意攻击者读取/写入它无法访问的队列的消息。
设置适当的路由的键:我想,如果每个用户创建另一个队列从它可以读取消息和发布的消息以特别定义的队列,这是可行的。但我猜这个问题是一样的,因为用户将使用相同的用户名连接到RabbitMQ:password:因此,该用户可以读取所有队列并根据访问规则写入它们。
我的问题是:如何让攻击者读/写队列,只代表他目前加入的房间,并阻止访问其他队列?
我想要使用以下内容:http://simonwdixon.wordpress.com/2011/06/03/getting-started-with-rabbitmq-on-android-part-1/。我想这使它成为前端系统,但没关系。用户仍然使用相同的用户名:密码连接到RabbitMQ。如果您能提出更准确/更准确的答案,我会接受您的答案。 – eleanor 2012-08-14 15:36:26
那么,这个例子并不涉及访问控制,一般来说,如果交换队列是公开访问的,那么任何具有队列路由键的人都可以(应该是IMO)将消息发布到队列中。 – Sachin 2012-08-14 17:40:35
那么,这个例子并没有提到访问控制,一般来说,如果交换队列是公开访问的,那么任何具有队列路由键的人都可以(应该是IMO)将消息发布到队列中。 IMO的博客文章根本不考虑安全性。考虑一个HTTP服务器作为访问控制机制的中介。需要考虑的另一件事 - 你可能不需要RabbitMQ连接到客户端连接 - 它需要TCP端口在网络中打开 - 防火墙可能会阻止客户端和RabbitMQ服务器之间的底层TCP连接。坚持到客户端服务器的HTTP。 – Sachin 2012-08-14 17:51:25