2012-02-20 30 views
2

我们有一个在第三方网站上运行的“小部件”,即任何使用我们的服务注册并嵌入JavaScript的人。在第三方网站上运行的安全JavaScript

目前,我们使用JSONP所有通信。我们可以通过使用iFrame和一些魔术来检测加载事件,从而安全地签署人员并创建帐户。 (从本质上讲,我们要等到iFrames源代码重新指向客户端域,然后再从其标题中读取成功值)。

因为我们正在JSONP运行,我们可以使用浏览器的HTTP cookies如果用户登录检测。

然而,我们在转变我们的系统运行的实时性和在网页的过程中插座。我们仍然使用相同的身份验证方法,但我们不一定会使用JSONP进行其他调用。相反,这些电话将在网页套接字(使用库王菲)

我怎样才能确保这种情况发生?潜在的安全漏洞是,如果有人从现有网站上复制JavaScript,改变它,然后让人们访问他们的网站。我认为这会破坏我最初的想法,即在登录时发回安全令牌,因为恶意JavaScript能够读取它,然后使用它执行经过身份验证的操作。

我是更好保持我的安全操作运行在普通JSONP和我在WebSockets的更新?

回答

4

Websocket连接仅在开始握手期间才会收到cookie。唯一可以访问websocket连接的网站是打开它的网站,因此如果您在认证后打开连接,那么我认为您的安全性将与您当前的JSONP实施相媲美。

这并不是说你JSONP实现是安全的。我不知道它不是,但是您是否检查了您的JSONP请求的引用来确保它们确实来自登录的同一个第三方网站?如果没有,您已经从嵌入您的JavaScript的其他网站的安全问题。

在任何情况下,有XSS漏洞的第三方也将是a very big problem,但想必你已经知道了。

0

无论您是通过浏览器打开网页套接字握手期间发送的cookie(如果有的话,什么饼干)不是由WS规范指定。这是浏览器供应商的责任。

一个WS连接可以打开到任何网站,不仅是最初服务JS的网站正在进行连接。但是,浏览器必须在WS开放握手中将“起源”HTTP标头设置为最初服务于JS的那一个。然后服务器可以自由接受或拒绝连接。

你可以即产生JS一个随机字符串,存储客户端,并让这再加上客户端IP参与计算的WS的身份验证令牌..