如何阻止谷歌随机化 xmpp 资源
Posted
技术标签:
【中文标题】如何阻止谷歌随机化 xmpp 资源【英文标题】:How to stop google from randomizing xmpp resource 【发布时间】:2013-01-30 10:29:28 【问题描述】:在 XMPP(即 gtalk)中,我们可以将资源设置为我们想要的(指定机器/位置/等),这适用于所有/大多数服务器和客户端。但在谷歌的情况下,它并不能完全按预期工作,因为每次用户连接谷歌都会将随机字符串附加到用户设置的资源中。这尤其令人讨厌,因为许多客户端通过 jid 和资源部分来区分用户聊天,这会导致在重新连接(并生成新资源)后打开多个窗口/选项卡。
tl;dr - 有没有办法阻止谷歌将随机字符串附加到用户设置的资源?
【问题讨论】:
【参考方案1】:简短的回答,没有办法。出于安全原因,资源应该是不可预测的。 GTalk 服务器通过向您的资源添加随机字符串来强制执行此操作。
【讨论】:
你能解释一下为什么它应该是不可预测的吗?我一直很喜欢向某些资源发送消息(例如,alice@example.org/mobile
如果紧急,alice@example.org/home
如果不是)
当我能猜出你的资源并知道你的 jid 时,我可以用 IQ 向你发送垃圾邮件
而这种“智商”垃圾邮件只有在您猜测/知道资源的情况下才有可能?所以不指定任何资源就不能简单地使用alice@example.org
?
是的,Iqs 总是发送到完整的 jid(有一些例外,如 vcard)
那么您不会显示它,但它仍然会通过网络路由到您的客户端,这很糟糕。只需使用不可预测的资源,您就可以了。我们今天有其他 xmpp 协议扩展,例如 caps 或 disco,以公开我们很久以前在资源中放置的东西,直到我们找到更好的方法。另请参阅上面乔的回复。【参考方案2】:
除了@Alex 的正确答案,不要在语义上使用资源。对于聊天,客户真的不应该再将每个资源视为单独的对话。我们在十多年前就吸取了这一教训。要识别客户端,请使用 XEP-0115 而不是硬编码资源。
【讨论】:
“我们十多年前就吸取了教训”指的是什么? 好的,但是在这种情况下,我们在哪里/如何设置资源优先级?更不用说对我们要将消息发送到哪里(即发送到什么“终点”)的任何控制? @Joe Hildebrand 你介意回答 cmets 要求澄清吗?以上是关于如何阻止谷歌随机化 xmpp 资源的主要内容,如果未能解决你的问题,请参考以下文章