Firefox跨Websocket主机域泄漏cookie

Firefox跨Websocket主机域泄漏cookie,firefox,cookies,websocket,Firefox,Cookies,Websocket,在Firefox9和10中使用Firebug和Live头文件, 我看到websocket请求/响应对跨域发送,但Cookie:contents错误 给出两个URL- 基本网页- Websocket url- 浏览器似乎正在发送基页主机名的cookie,而不是与辅助主机名关联的任何cookie。i、 e.与基本网页一起加载的JSESSIONID cookie将被回送到外部连接 这是错误还是预期的行为?我从未见过WebSocket如何对cookies做出反应 在我看来,这可能是一个非常严重的安全违规

在Firefox9和10中使用Firebug和Live头文件, 我看到websocket请求/响应对跨域发送,但Cookie:contents错误

给出两个URL-

基本网页-

Websocket url-

浏览器似乎正在发送基页主机名的cookie,而不是与辅助主机名关联的任何cookie。i、 e.与基本网页一起加载的JSESSIONID cookie将被回送到外部连接

这是错误还是预期的行为?我从未见过WebSocket如何对cookies做出反应

在我看来,这可能是一个非常严重的安全违规行为,因为它将站点的cookie暴露给外部websocket服务


更新到firefox 10,但仍然看到一个问题

下面是两个背对背连接的稍微澄清的Live Header跟踪

JSESSIONID和CLIENT_LOCALE cookies将从9443应用服务器复制到61623 mq服务器

----------------------------------------------------------
https://myapp.com:9443/server/themes/standard/public/gwt/xxstandard/images/logout-icon.png

GET https://myapp.com:9443/server/themes/standard/public/gwt/xxstandard/images/logout-icon.png HTTP/1.1
Host: myapp.com:9443
User-Agent: Mozilla/5.0 (Windows NT 5.1; rv:10.0.1) Gecko/20100101 Firefox/10.0.1
Accept: image/png,image/*;q=0.8,*/*;q=0.5
Accept-Language: en-us,en;q=0.5
Accept-Encoding: gzip, deflate
Connection: keep-alive
Referer: https://myapp.com:9443/server/example.htm?gwt.codesvr=127.0.0.1:9997&log_level=INFO
Cookie: JSESSIONID=0000wCOpgfIsSNOz2lL22O5LOiI:-1; CLIENT_LOCALE=en_US; 
Pragma: no-cache
Cache-Control: no-cache

HTTP/1.1 200 OK
Date: Thu, 16 Feb 2012 19:02:55 GMT
Content-Type: text/plain
Last-Modified: Wed, 29 Jun 2011 20:44:11 GMT
Content-Length: 669
Content-Language: en-US
Server: WebSphere Application Server/7.0
----------------------------------------------------------
http://myapp.com:61623/stomp

GET http://myapp.com:61623/stomp HTTP/1.1
Host: myapp.com:61623
User-Agent: Mozilla/5.0 (Windows NT 5.1; rv:10.0.1) Gecko/20100101 Firefox/10.0.1
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
Accept-Language: en-us,en;q=0.5
Accept-Encoding: gzip, deflate
Proxy-Connection: keep-alive
Sec-WebSocket-Version: 8
Sec-WebSocket-Origin: https://myapp.com:9443
Sec-WebSocket-Key: FToA/HGiVQN3CbGOgNffMA==
Cookie: JSESSIONID=0000wCOpgfIsSNOz2lL22O5LOiI:-1; CLIENT_LOCALE=en_US; 
Pragma: no-cache
Cache-Control: no-cache
Upgrade: websocket
Connection: Upgrade

HTTP/1.1 101 Switching Protocols
Upgrade: WebSocket
Connection: Upgrade
Sec-WebSocket-Accept: 5lqrLU4mbPiEasSn4gqOlqWvGgw=
----------------------------------------------------------

同源策略和CORS不适用于WebSocket

对于WS,在初始WS-opening握手中发送一个“源”HTTP头,对于浏览器,该源头必须包含最初为打开WS-opening的HTML/JS提供服务的服务器的主机名

然后WS-server可以自由接受/拒绝

对于非浏览器WS客户端,源标题可能存在,也可能不存在,并且可能包含任何内容

Cookies:WS-spec没有指定它。请参见此处的Patrick的回复(Firefox WS-developer)


发送的cookies应该是wss URL中的主机名。您是否有一个示例页面来显示您看到的问题?对不起,我现在所有的工作都是localhost。从FF9升级到FF10阻止了跨主机覆盖Cookie。您能否用FF10澄清您的结果(您的评论和编辑冲突)。如果它发生在FF10上,假设你没有意外地在目标的cookies中设置JSISTISID,那么我肯定会认为这是一个bug,你应该用Mozilla来创建一个bug。你能把这个行为和Chrome的最新版本进行比较吗?很抱歉,我的评论把你搞糊涂了。使用FF9,websocket连接允许覆盖根页面的cookie。当接收到活动mq会话cookie时,这种上下文合并表现为app server会话注销。FF10修复了这个问题,但仍然暴露了bugzilla.mozilla.org文件中的错误cookies.bug。感谢您对同源策略和WebSocket的更新。这种限制似乎在FF版本中有所改变。