首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >最佳长期选择: JSONP对EasyXDM

最佳长期选择: JSONP对EasyXDM
EN

Stack Overflow用户
提问于 2011-09-09 14:21:15
回答 1查看 8.6K关注 0票数 33

EasyXDM之间,允许http上的域在https (跨协议)上与同一个域对话,JSONPEasyXDM之间的最佳长期选择是什么?

例如,我希望http://mywebsite.comhttps://mywebsite.com对话,因为会话cookie仅在https之上。我想在http网站上显示用户名,而不需要在http上传输这些数据。

EasyXDM用安全释放吓了我一跳,而JSONP对安全防范措施并不十分清楚。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2011-09-10 09:43:11

免责声明:我是easyXDM的主要作者。

事实上,要直接回答这个问题并不容易,因为有很多事情要考虑。

首先,让我们在问题范围之外比较easyXDM和JSONP。

JSONP允许客户端程序(使用BOM/DOM的Javascript)与服务器端程序(.net、php等,使用db's、会话存储等)进行交互,只有客户机才能启动消息传递(请求/响应、轮询或推送,尽管对于push,您可以轻松地设置IMG.src、执行XHR或表单发布,因为您不需要响应)。

客户端可以发送到服务器的数据量有限,并且必须将该数据格式化为适合于查询字符串参数,并且必须设置服务器以响应所述数据。对于每一条消息,都会运行一次网络旅行,并承担由此带来的费用。

easyXDM使用基于字符串的传输堆栈在任意两个客户端程序之间方便消息传递。不需要任何服务器端程序,也不需要网络流量。双方都是平等的,都可以启动消息传递,并且都可以在客户端保持状态(因此程序这个术语而不是普通的Javascript)。消息的大小是不受限制的,只要数据可以序列化为字符串,传输就可以处理它(easyXDM允许您设置自定义序列化程序,或者使用JSON)。

这两个程序之间的主要区别是,一个是客户机和服务器之间,其中只有客户端可以启动消息传递,另一个是在两个相同的客户端程序之间,其中一个可以使用XHR和其他方式与服务器通信,或者将数据中继到服务器。

关于安全性,JSONP要求客户端绝对信任服务器,毕竟它允许服务器在其程序中运行任意代码。除此之外,没有什么问题,但这是一个严重的问题。

使用easyXDM只发送信息(字符串),不发送代码,由接收方检查信息并对其采取行动。因此,绝对没有执行任意代码的风险。虽然上述情况是正确的,但easyXDM所依赖的一些组件很容易受到XSS的攻击(巧尽心思构建的url会导致客户端执行任意代码),但这些组件已经关闭。目前还不知道这些漏洞,所有新代码都经过了彻底的检查。

我自己用easyXDM来做一些要求很高的项目,像LinkedIn、Twitter和Disqus这样的网站,以及诺基亚和其他公司运行的应用程序,都是在easyXDM提供的消息传递框架之上构建的,所以有很多人已经检查了代码,并通过使用它来保证代码的安全性。

最后,它实际上是关于用例的。例如,JSONP不能用于调整跨域窗口的大小,因为这需要客户机/客户端通信。但是,easyXDM可以同时用于客户机/客户端和客户机/服务器,方法是让其中一方使用XHR。

在您的情况下,如果您只需要在不安全的域上提供一小块信息,这两种信息都不是真正需要的。

  • 浏览安全域,在不安全域上设置cookie。
  • 通过安全域导航,让它重定向到请求中的不安全传递信息。
  • 导航到安全域,让它在重定向到不安全域之前将数据存储在window.name中。

如果信息不能被欺骗是至关重要的,那么您需要对所有这些数据进行签名,以便确认其真实性,但是如果您只需要一个名称,那么这就没有必要了。

检查真实性的一个简单方法是

  • 在不安全域上,生成一个随机秘密并存储它,然后重定向到传递该秘密的不安全域。
  • 在安全域上,将秘密连同信息一起传回(使用上述任何一种方法)
  • 在客户端上,验证该信息是否包含该秘密。

因为只有双方才有可能知道这个秘密,所以这些信息是经过核实的。

总结,真的没有明确的答案,这一切都取决于情况。因此,选择,但明智地选择:)

票数 74
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/7363094

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档