我正在编写一个 Android 应用程序并想定义房间。房间将容纳某些游戏的所有用户。这就像扑克有 4 个玩家,每个房间可以容纳 4 个用户。我还想使用 rabbitmq 来实现可扩展性和可定制性。问题是 Android 应用程序使用相同的用户名:密码将所有用户连接到 RabbitMQ 服务器(特定虚拟主机)。
我想我担心一个用户可能能够读/写来自不同队列的消息,这是应该的。有多种解决方案不满意:
在每个 Android 应用程序中使用不同的用户:这确实无法做到,因为 Android Market 不允许每个下载它的用户使用不同的应用程序。即便如此,这也是一个愚蠢的想法。
设置适当的访问控制:http ://www.rabbitmq.com/access-control.html 。我想这不会阻止恶意攻击者从/向它无权访问的队列读取/写入消息的问题。
设置适当的路由键:我猜如果每个用户创建另一个队列,它可以从中读取消息并将消息发布到专门定义的队列,这可以工作。但我想问题是一样的,因为用户将使用相同的用户名:密码连接到 RabbitMQ:因此该用户可以读取所有队列并写入它们(基于访问规则)。
我的问题是:如何允许攻击者读取/写入仅代表他当前加入的房间的队列,并阻止访问其他队列?