Mal*_*tre 33 security jsonp cross-domain
JSONP和EasyXDM之间最好的长期选择是什么,允许http上的域与https(跨协议)上的同一域通信?
例如,我希望http://mywebsite.com与https://mywebsite.com对话,因为会话cookie仅通过https.我想在http网站上显示用户名,而不是通过http传输数据.
EasyXDM在安全性方面让我感到害怕,而JSONP在安全预防方面并不十分清楚.
Sea*_*sey 74
免责声明:我是easyXDM的主要作者.
实际上直接回答这个问题并不容易,因为有很多事情需要考虑.
首先,让我们比较问题范围之外的easyXDM和JSONP.
JSONP允许客户端程序(使用BOM/DOM的Javascript)与服务器端程序(.net,php等使用db,会话存储等)进行交互,并且只有客户端可以启动消息传递(请求/响应,轮询或推送,虽然对于推送,您可以轻松设置IMG.src,执行XHR或FORM帖子,因为您不需要响应).
客户端可以发送到服务器的数据量有限,并且还必须将此数据格式化为适合作为查询字符串参数,并且必须设置服务器以响应所述数据.对于每条消息,运行网络旅行时产生的成本.
easyXDM 使用基于字符串的传输堆栈促进任意两个客户端程序之间的消息传递.不需要涉及任何服务器端程序,也没有网络流量.双方都是平等的,并且都可以发起消息传递,并且可以在客户端上保持状态(因此术语程序而不是普通的Javascript).消息的大小不受限制,只要数据可以序列化为字符串,传输就可以处理它(easyXDM允许您设置自定义序列化程序,或使用JSON).
这两者之间的主要区别在于客户端和服务器之间只有客户端可以发起消息传递,而另一个是在两个相同的客户端程序之间,其中任何一个可以使用XHR和其他方式进行通信,或者中继数据到服务器.
关于安全; JSONP要求客户端完全信任服务器,毕竟它允许它在程序中运行任意代码.除此之外,几乎没有问题,但这是一个严重的问题.
使用easyXDM信息(字符串)并且不传输代码,接收者可以检查信息并对其进行操作.因此绝对没有执行任意代码的风险.虽然上述情况属实,但easyXDM依赖于建立通道的一些组件易受XSS攻击(一个特制的URL会导致客户端执行任意代码),但这些组件已被关闭.目前还没有这样的漏洞,所有新的代码都经过彻底的审查.
我自己将easyXDM用于一些要求苛刻的项目,而LinkedIn,Twitter和Disqus等网站以及诺基亚和其他公司运行的应用程序都在easyXDM提供的消息框架之上构建了应用程序,所以有很多人已经过了代码并检查它,以及通过使用它来保证其安全性.
最后,它实际上是关于用例.例如,JSONP不能用于跨域调整窗口大小,因为它需要客户端/客户端通信.但是,easyXDM可以通过让一方使用XHR 来用于客户端/客户端和客户端/ 服务器.
在您的情况下,如果您只需要在不安全的域上提供一小段信息,那么这些都不是真正需要的.
如果信息不能被欺骗是至关重要的,那么您所有这些都需要签署数据以便确认其真实性,但如果您需要的只是一个名称,那么这应该是不必要的.
检查真实性的简单方法是
由于只有双方可能有秘密,所以信息得到验证.
总而言之,确实没有确定的答案,这完全取决于具体情况.所以选择,但明智地选择:)