【发布时间】:2020-01-01 14:51:56
【问题描述】:
正如您在下面的示例代码中看到的,Smack 要求我提供服务名称和主机。我将 Ejabberd 与 Linux 和一个 EC2 实例一起使用。
在检查 XMPP 客户端应用程序时,我看到了使用其他 XMPP 提供商创建帐户的选项。我担心当我向公众发布我的应用程序时,我的 EC2 实例的 DNS 将使人们能够创建大量帐户,而不是直接从我的应用程序而是从任何地方创建。
我应该使用 Firebase Functions 之类的东西吗?或者类似的东西?解决这个问题的最佳方法是什么?我只是不希望主机名公开。
XMPPTCPConnectionConfiguration.Builder config = XMPPTCPConnectionConfiguration
.builder();
config.setSecurityMode(ConnectionConfiguration.SecurityMode.disabled);
config.setServiceName(serverAddress);
config.setHost(serverAddress);
config.setPort(5222);
config.setResource(context.getResources().getString(R.string.resource_name));
config.setDebuggerEnabled(true);
config.setSendPresence(true);
XMPPTCPConnection.setUseStreamManagementResumptiodDefault(true);
XMPPTCPConnection.setUseStreamManagementDefault(true);
mConnection = new XMPPTCPConnection(config.build());
XMPPConnectionListener connectionListener = new XMPPConnectionListener(type);
mConnection.addConnectionListener(connectionListener);
【问题讨论】:
-
您无法阻止主机名的发现——您的应用程序会访问它,因此发现它非常简单。主机名不是也不能是秘密的,这就引出了下一个问题:为什么,具体来说,这是一个问题?您似乎担心人们会在您的服务器上“创建大量帐户”,那么为什么会这样呢?您的服务器是否只是坐在那里,暴露在外,(错误?)配置为允许发现它的任何人创建新帐户,或者......?威胁模型不清楚,这也是您提到 firebase 功能的原因......如何使用这些帮助?
-
您好,兄弟,感谢您的回答。我已经检查过 Conversations,一个 xmpp 客户端,它允许您向他们自己的 xmpp 提供者或其他 xmpp 提供者注册帐户。我在想,也许有人拿了我的主机名,进入那个应用程序并创建了一个帐户:/ 。你认为有可能让一个 ec2 实例只响应特定的 1 个应用程序而没有其他人。如果这是可能的,那么一切都解决了。我正在考虑将 firebase 函数作为一种解决方案,例如,在没有任何人看到我的主机名的情况下拥有我的主机名并执行所有逻辑。
标签: android amazon-ec2 xmpp ejabberd