安全性 - Ejabberd - 验证客户端

Posted

技术标签:

【中文标题】安全性 - Ejabberd - 验证客户端【英文标题】:Security - Ejabberd - Validate Client 【发布时间】:2013-07-05 09:57:27 【问题描述】:

我已经在我们的 AWS 服务器中安装了 Ejabberd

我们正在开发一个 ios 消息应用程序,我们不希望其他客户端访问我们的消息服务器,而不是我们的 iOS 应用程序。

所有 ejabberd 服务都应该只能由我们的 iOS 应用访问,

    注册 登录 发送消息和使用任何其他服务。

为了保护我们的服务器,我应该做哪些配置和设置?

【问题讨论】:

【参考方案1】:

没有 100% 的方法可以禁止其他客户端模仿您自己的客户端。您可以使用不同的协议,或多一层加密或允许您的服务器使用的特殊标记来确保客户端是您的。但是,如果有人想要编写自己的客户端,他会使用您自己的客户端来了解应该通过网络发送什么。

【讨论】:

你能简单介绍一下或给我一些关于“多一层加密”和“特殊标记”的有用链接吗? 您可以让您的客户在协商流时提供特殊值,例如内部版本号。服务器知道哪些内部版本号被允许连接到它,例如哪个加密密钥用于加密或签署数据。当数据到达时,服务器会解密或检查该数据是否已正确签名并了解客户端是真实的。这种方式使标准客户端无法与您的服务器一起操作。如果你的外星客户端模仿你的,只需在新客户端中更新该密钥,让用户从旧客户端更新并禁止旧版本。不过这并不容易。 很好,我应该在哪里验证签名数据,我的意思是我可以在哪里读取它们?我是否必须知道 Erlang 才能做到这一点,还是可以用 php 完成?【参考方案2】:

XMPP 建立在 TCP 之上,因此没有限制对服务器套接字的访问的好方法。如果您想符合 XMPP,则需要使用加密,否则请使用您自己的自定义协议(如 Skype)。

【讨论】:

以上是关于安全性 - Ejabberd - 验证客户端的主要内容,如果未能解决你的问题,请参考以下文章

ejabberd http-bind 阻止使用不同资源运行并行会话

如何从 ejabberd 服务器向多个客户端发送消息

ejabberd:生成自己的进程并将结果路由回客户端

让 ejabberd 通知外部模块客户端存在更改

如何使用 XMPPHP 客户端创建 XMPP(ejabberd) 用户

无法让 jabber 客户端连接到在 localhost 上运行的 ejabberd