如何在 XMPP 中阻止匿名用户

Posted

技术标签:

【中文标题】如何在 XMPP 中阻止匿名用户【英文标题】:How to block anonymous user in XMPP 【发布时间】:2013-04-29 06:11:42 【问题描述】:

为了在我的应用中实现聊天功能,我在其中集成了 XMPP 框架。没有好友请求功能,因此用户可以在不发送好友请求的情况下向其他用户发送消息。由于这个功能,我没有在应用程序中创建任何名册或隐私列表,并且已经实现了匿名聊天模式。

除了阻止用户功能外一切正常,因为这是一个匿名用户聊天,因此没有用户的隐私列表,XMPP 扩展 XEP-016 仅支持通过隐私列表进行阻止。

我也尝试寻找替代方案,其中之一是实现 XEP-0191,但不幸的是 Open Fire 不支持此扩展。

所以技术人员请指导我解决这个问题。以下是我的问题。

    我是否需要创建隐私列表/名册以在匿名用户聊天模式下阻止用户。这个解决方案看起来不切实际,因为我的应用可能有成千上万的用户。

    我应该将 Jabber 服务器从 open fire 更改为 EJabber 吗? Ejabber 是否支持 XEP-0191

除上述之外,如果你们知道在 Jabber 中以匿名用户聊天模式阻止/取消阻止用户的任何其他解决方法,请告诉我。

【问题讨论】:

【参考方案1】:

我没有使用 EJabber 服务器的经验,但 XEP 0191 绝对是您需要的协议。

您可以在这里查看http://www.ejabberd.im/protocols 并了解 EJabber 支持您的协议。

我的建议是更换服务器。

【讨论】:

【参考方案2】:

无论如何,一个块是没有实际意义的。如果您阻止某人,他们可以创建一个新的匿名用户并再次开始与您联系。虽然这看起来需要付出很多努力,但可以很容易地编写脚本来发送垃圾邮件。您每 30 分钟创建一个新帐户并向每个人发送垃圾邮件,然后被踢并重复。

至少您将不得不实施 XEP-0191(服务器端阻止列表)并弄清楚如何处理匿名新帐户。

【讨论】:

【参考方案3】:

不幸的是,我不得不坚持使用 Open fire 服务器。为了解决阻塞用户的问题,我翻阅了 XMPP 的文档,终于在 XEP-0016 中找到了解决方案,这个扩展确实有支持匿名用户阻塞的能力。为此,必须使用- (void)setListWithName:(NSString *)privacyListName items:(NSArray *)items fromUser:(NSString *)user;method 在服务器上创建一个隐私列表。完成后,通过调用 - (void)setActiveListName:(NSString *)privacyListName; 方法将创建的列表标记为活动列表。

XEP-0016 与名册无关,它可以阻止匿名用户聊天。

【讨论】:

我有和你类似的应用程序,我无法阻止匿名用户。您能否分享一下您是如何实现此功能的。我正在将 xmpp 与 ejabber 服务器一起使用。 @Sunil_Vaishnav 您需要在 jabber 服务器上维护被阻止用户的隐私列表。每次用户被阻止/解除阻止时,您都需要在该隐私列表中进行更改。有关详细信息,请参阅 XEP-0016。 @sandy, @ Sunil_Vaishnav 我想在 XMPP 中简单地阻止和解除阻止用户请在下面的链接中找到更多信息。 ***.com/q/46155095/2910061 谢谢。

以上是关于如何在 XMPP 中阻止匿名用户的主要内容,如果未能解决你的问题,请参考以下文章

Spring-security 阻止匿名用户从 MongoDB 中提取数据

无需登录 XMPP MUC

如何阻止谷歌随机化 xmpp 资源

在 XMPP 框架 iOS 中阻止用户

如何在 asp.net core razor 页面中拒绝匿名用户?

如何在颤振应用程序中使用相同的 Firebase 匿名用户