0

是否可以使用 Strophe.js 使用匿名用户创建新用户(带内注册),如下例所示:http ://groups.google.com/group/strophe/browse_thread/thread/a0e15ae226b91a3a?fwc=1 。我设法仅使用现有帐户注册新用户(作为普通的“非管理员”用户)。这是一个开放式安全问题吗?我使用匿名连接:

 connection.connect("server.local", null, onConnect);

服务器返回:

 <iq xmlns="" type="error" id="reg2" to="7711fc7f@server.local/7711fc7f">
    <query xmlns="jabber:iq:register">
        <username>user</username>
        <password>abc</password>
    </query>
    <error code="400" type="modify">
        <bad-request xmlns="urn:ietf:params:xml:ns:xmpp-stanzas"/>
    </error>
</iq>

如果我与注册用户连接,它工作正常,我可以创建其他用户。允许从专用用户帐户(例如 register@server.local(没有管理员权限))进行注册会不安全吗?

4

1 回答 1

2

我设法仅使用现有帐户注册新用户(作为普通的“非管理员”用户)。这是一个开放式安全问题吗?

这取决于您的观点 - 如果这是您想要的,不,这不是安全问题。如果您想将帐户创建限制为部署中的管理员,是的。Openfire 应该有配置参数来控制谁可以创建帐户(尽管在某些版本中这些控件根本不起作用 - 这一个安全问题!)。

周围有一些已知的脚本可以主动发现并在具有开放注册的服务器上注册帐户。一些人(尤其是像 jabber.org 这样的大型目标)选择完全禁用带内注册,而另一些人则只是对其设置 per-IP 速率限制限制。还有一个规范 ( XEP -0158 ) 用于将验证码发送给客户端进行带内注册,但对此的支持远未普及。

服务器返回:

你给出的错误节有xmlns="",这在我看来是可疑的。它应该是“jabber:client”,但 Openfire 似乎无论如何都理解它。

您还可以尝试将请求的“收件人”地址设置为您尝试注册的主机(例如to='example.com',在注册“user@example.com”时)。如果您已经设置“to”,请尝试不使用它。关于这一点,我已经看到了对规范的不同解释。

于 2012-05-02T23:27:22.367 回答