2014-10-29 34 views
1

比方说,我想写一个移动聊天应用程序(就如一个例子)。如何保护用于移动应用程序的消息系统(如RabbitMQ/MQTT)?

如何只接收针对一个客户端的消息,不要让其他客户端接收那些不适合他们的消息!

  • 创建只有客户端已知的临时队列? - 足够安全吗?
  • 使用客户端公钥加密消息? - 需要自己的PKI!
  • 根据客户端每次请求发送的凭据限制对队列的访问? - 每个请求都需要进行身份验证!
  • ...?

如果客户端向外发队列发送消息,如何防止其他客户端直接从队列中读取消息!?

  • 将访问限制为只写? - 不知道这是否可能...
  • 加密邮件? - 需要自己的PKI!
  • ...?

我希望我的问题很清楚,我非常期待听到您的想法和最佳实践!

提前致谢!

//编辑:所以使用加密消息的每个客户端的临时队列可能是一个不错的选择。或者你有什么其他的想法?

+0

“用客户端公钥加密邮件?” - 并让每个客户端下载*所有*消息,看看是否有一个注定是为了自己? – JimmyB 2014-10-29 14:05:34

+0

不!每个客户端仍然有自己的队列,但是加密将阻止其他用户/客户端/黑客阅读他们不应该阅读的消息。 – TheCutter 2014-10-29 14:51:35

回答

2

如果您使用RabbitMQ AMQP代理,那么您可以使用Validated User-ID extension电源,但您必须为每个客户端创建单独的用户。

使用每个客户端队列可能是一个不错的选择,但您必须认识到它“安全通过隐晦”,它闻起来。但正如你所建议的那样,消息加密可以解决这个问题

你可以玩Access Control,但你可能会发现最好有一些服务器应用程序来处理复杂的用户管理事情,并从客户端使用API​​来改善用户策略管理。

+0

也许将每个客户端队列与加密消息相结合将是一个不错的选择。或者你觉得怎么样? – TheCutter 2014-10-30 08:51:51

+0

这确实取决于你的需求,但对我来说看起来不错(我注意到,与我最近的编辑)。 – pinepain 2014-10-30 12:01:42

+0

只是一个快速建议,当客户端数量增长时,每个客户端的队列变得非常麻烦 – learner 2017-02-20 11:59:13

相关问题