security - 移动应用程序中的 RabbitMQ 安全性

标签 security ssl rabbitmq

我在我们正在开发的一款移动应用程序中使用 Rabbit MQ 代理,我对安全方面有些困惑。我们正在使用云托管的 rabbitmq,托管平台已经为我们提供了用户名和密码(此后已更改),我们正在使用 SSL 连接,所以不太担心 MIM 或窃听。

我担心的是任何知道主机和端口的人都可以连接到 rabbitmq,因为我们有移动应用程序,我们将 rabbitmq 用户名和密码存储在设备上(尽管已加密)所以我猜任何人都可以物理访问设备并以某种方式解密用户名密码可以登录到rabbitmq,一旦你登录了,你几乎可以在rabbitmq上做任何事情,比如删除队列等。 Rabbitmq之类的MQ是如何在移动环境中使用的。有没有更好/更安全的使用 rabbitmq 的方法。

最佳答案

根据我的经验,最好不要让您的移动应用程序直接连接到 rabbitmq。在应用程序和 RabbitMQ 之间使用 Web 服务器。让您的移动应用程序通过基于 HTTP 的 API 调用连接到您的网络服务器。 Web 服务器将连接到 RabbitMQ,您不必担心移动应用程序中有连接信息。

除了安全问题之外,这样做还有几个优点:

  • 更好地管理 RabbitMQ 连接
  • 更容易扩展移动用户数量
  • 能够根据需要向后端添加更多逻辑和处理,而无需更改移动应用

创建与 RabbitMQ 的连接是一项开销很大的操作。它需要 TCP/IP 连接。一旦该连接打开,它就会保持打开状态,直到您关闭它。如果您从您的移动应用程序打开一个连接并保持打开状态,您将减少到 RabbitMQ 的可用连接数。如果您快速打开和关闭连接,则会在不断创建和关闭连接时产生大量额外成本。

中间有一个网络服务器,您可以打开一个连接并让它管理多个移动设备。 Web 服务器将处理 http 请求并使用到 rabbitmq 的一个连接将消息推送给它。

由于 HTTP Web 请求是一个短暂的连接,与直接的 rabbitmq 连接相比,您将能够在短时间内处理更多的用户。

这最终会带来更好的可扩展性,因为您可以添加另一台 Web 服务器来处理数以千计的移动应用程序实例,而只需添加 1 个新的 RabbitMQ 连接。

这还允许您在网络服务器内部添加中间层逻辑。您可以根据需要添加额外的处理层,而无需更改移动应用程序。更改 Web 服务器代码并根据需要重新部署。

如果您必须在中间没有服务器的情况下执行此操作,您可能无法解决您遇到的安全问题。移动设备将包含建立连接所需的信息。

关于security - 移动应用程序中的 RabbitMQ 安全性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32433384/

相关文章:

php - 我应该何时以及如何使用此功能?

ssl - 如何在 unix 服务器中添加 SSLC 证书

ssl - HAProxy SSL 终止 - 客户端证书扩展 key 使用扩展验证

使用 Nginx 的 SSL 直通

javascript - 如何告诉 IE 我磁盘上的 HTML 文件没有安全风险?

python - vscode-python pipelinenv 自动运行行为是否存在安全风险?

ios - 与 iOS 推送通知证书相关的安全风险

php - rabbitmq 在 linux 中发送数据 php

java - spring rabbitmq发送动态绑定(bind)交换

amazon-ec2 - EC2 中的 2 个不同的可用区是充当 WAN 还是 LAN?