XMPP Strophe.JS 应用程序安全问题

Posted

技术标签:

【中文标题】XMPP Strophe.JS 应用程序安全问题【英文标题】:XMPP Strophe.JS Application Security Concern 【发布时间】:2013-10-29 12:33:29 【问题描述】:

我正在为网络平台寻找一个好的 XMPP 聊天应用程序标准(如 eBuddy、Facebook 聊天等)和健壮。

但出于安全考虑,我不确定开发纯 javascript 应用程序。大多数现代浏览器都可以通过像 Google Chrome 一样的检查元素功能来查看您的 Javascript 代码。恐怕这可能是未来几天的一个关键问题。所有人都可以看到并了解您的应用程序逻辑以及您的应用程序在后台执行的操作。

我的问题是可以将 Strophe.js 和服务器端编程(例如 php、ASP.NET 等)结合起来。我的意思是使用 Strophe.js 作为视图层和服务器端编程作为控制器层?

或者是否可以隐藏您的 Javascript 代码,使用户无法看到您应用程序背后的细节?

最佳做法是什么?

提前致谢:)

【问题讨论】:

【参考方案1】:

取决于您的安全问题。

我担心的是用户名和密码是公开的。我们的 Web 应用程序是 MVC,我构建了一个类来创建/记录用户并将 SID、RID 和 JID 传递回前端(Strophe),然后附加到 jabber 服务器以开始聊天。有关更多信息,请参阅http://xmpp.org/extensions/xep-0206.html。本质上是创建 xml 字符串,发送到 jabber 服务器并管理响应,如 xep 206 所示。

【讨论】:

您是否在您的应用程序中结合了任何服务器端编程?还是纯 javascript? 是的,用 C# 编写了几个类来从数据库中获取用户名和密码,使用 xep 206 进程发送到 jabber 服务器。您必须启动,然后进行身份验证,然后重新启动、绑定和设置会话。我发现我需要宣布一口井的存在。此过程将为您提供 SID 和 JID。您可以通过创建一个随机 int 并每次递增它来创建 RID。将这 3 个项目传给 strophe,然后附加。看看metajack.im/2008/10/03/getting-attached-to-strophe。它在 django 中,但可以让您很好地了解该过程。 您是使用任何 XMPP-C# 库进行用户身份验证还是手动进行?你正在用 C# 开发 asp.net,对吧? 我们的应用是 MVC/c#。我自己滚动。在 xep 206 中构建并发送主体作为 webrequest(在 c# 中),将返回的流转换为 XML 文档并分析响应。回复将告诉您下一步该做什么。按照xmpp.org/extensions/xep-0206.html#initiate 上的步骤 3,4 和 5,您应该一切顺利。 嗨@Mark,我又遇到了另一个问题,我正在使用 Strophe .attach()。但是每次我刷新页面时,会话都会终止 404 (Invalid SID)。我已经将 RID 增加 1。我应该在重新加载页面时重新生成 SID 和 RID 吗?

以上是关于XMPP Strophe.JS 应用程序安全问题的主要内容,如果未能解决你的问题,请参考以下文章

node.js, XMPP Strophe.js

XMPP Web 客户端(使用 strophe.js)花时间连接 ejabberd 服务器

无法在 windows phone 7.5(vs2010) 上使用 strophe.js 保持与 XMPP 服务器的连接

使用 Strophe js (CONNFAIL) 连接到 Prosody XMPP 服务器

在页面卸载 strophe.js 发送请求两次!为啥?

使用 Strophe.js 建立 WebSocket 连接