2014-10-29 35 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

相關問題