Firefox在Websocket主机域中泄漏cookie

时间:2012-02-16 01:33:51

标签: firefox cookies websocket

在Firefox 9& 10使用Firebug和Live Headers, 我看到websocket请求/响应对是跨域发送但使用错误的Cookie:contents。

提供两个网址 -

基本网页 - http://www.mysite.test/mywebapp

Websocket网址 - http://stompeserver.mysite.test/stomp

浏览器似乎正在发送基页主机名的cookie,而不是与辅助主机名相关的任何cookie。即,加载了基本网页的JSESSIONID cookie正在回显到外部连接。

这是一个错误还是预期的行为?在任何地方我都没有看到如何将websockets作为对cookie的反应。

IMO,通过将网站的Cookie暴露给外部websocket服务,这可能是一种非常严重的安全违规行为。


更新到firefox 10并仍然看到问题。

以下是两个背靠背连接的略微明确的实时标题跟踪

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

----------------------------------------------------------
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=
----------------------------------------------------------

1 个答案:

答案 0 :(得分:2)

同源策略和CORS不适用于WebSockets。

使用WS,在初始WS打开握手中发送“origin”HTTP头,对于浏览器,此源头必须包含最初服务于打开WS的HTML / JS的服务器的主机名。

然后,WS服务器可以自由接受/拒绝。

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

Cookies:WS规范没有规定。请参阅Patrick的回复(Firefox WS开发人员)

http://www.ietf.org/mail-archive/web/hybi/current/msg08017.html