如何在XMPP中阻止匿名用户

7
为了在我的应用中实现聊天功能,我已经将XMPP框架集成到了应用中。由于没有好友请求功能,因此用户可以向其他用户发送消息而不发送好友请求。由于这个功能,我在应用中没有创建任何花名册或隐私列表,并实现了匿名聊天模式。
除了阻止用户功能以外,一切都工作正常。由于这是一个匿名用户聊天,因此用户没有隐私列表,而XMPP扩展XEP-016仅支持通过隐私列表进行阻止。
我还尝试寻找替代方案之一是实现XEP-0191,但不幸的是Open Fire不支持此扩展。
那么,技术人员请指导我解决这个问题。以下是我的问题。
1. 在匿名用户聊天模式下,我需要创建隐私列表/花名册来阻止用户吗?这个解决方案看起来不切实际,因为我的应用可能有成千上万的用户。 2. 我应该将Jabber服务器从Open Fire更改为EJabber吗?Ejabber是否支持XEP-0191?
除了上述内容,请让我知道您是否知道任何其他解决匿名用户聊天模式中阻止/取消阻止用户的方法。
3个回答

1
我没有使用过EJabber服务器,但XEP 0191绝对是你需要的协议。
你可以在这里查看http://www.ejabberd.im/protocols,看到EJabber支持你的协议。
我的建议是更换服务器。

1
一个屏蔽也没有意义。如果你屏蔽了某个人,他们可以轻松地创建一个新的匿名用户并再次联系你。虽然这可能需要花费很多努力,但它可以很容易地被脚本化以发送垃圾邮件。每30分钟创建一个新帐户并向所有人发送垃圾邮件,然后被踢出并重复此过程。

至少你需要实施XEP-0191(服务器端阻止列表)并找出如何处理匿名新帐户。


0

很遗憾,我必须坚持使用Open fire服务器。为了解决用户屏蔽问题,我不得不查阅XMPP文档,并最终在XEP-0016中找到了解决方案,这个扩展确实具有支持匿名用户屏蔽的能力。要完成这个过程,需要使用- (void)setListWithName:(NSString *)privacyListName items:(NSArray *)items fromUser:(NSString *)user;方法在服务器上创建一个隐私列表。一旦完成,通过调用- (void)setActiveListName:(NSString *)privacyListName;方法将创建的列表标记为活动列表。

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


我正在开发一个类似于你的应用程序,但是我无法阻止匿名用户。你能否分享一下你是如何实现这个功能的?我正在使用ejabber服务器的xmpp。 - Sunil_Vaishnav
@Sunil_Vaishnav,你需要在Jabber服务器上维护一个被屏蔽用户的隐私列表。每次用户被屏蔽/取消屏蔽,你都需要在该隐私列表中进行更改。请参考XEP-0016获取更多信息。 - sandy
@sandy,@Sunil_Vaishnav 我想在XMPP中简单地阻止和解除用户的阻止。请查看以下链接以获取更多信息。https://stackoverflow.com/q/46155095/2910061 谢谢。 - Ilesh P

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接