【发布时间】:2014-04-02 23:38:55
【问题描述】:
只是想知道是否有人在 CF10 中遇到过这样的问题,即在 HTTPS 下为同一应用程序的子域之间交叉时会话被丢弃,即使 JSESSIONID 在这些链接中明确传递,这些链接已经为我们工作了 5 年以上而没有在 CF10 之前失败。从我读到的内容看来,CF10 中的会话固定安全问题似乎有很大的变化,这解释了为什么会话会在 HTTP 和 HTTPS 之间跳转,但这并不能解释我的问题。我了解 CF 9.02 和 CF 中引入的 Session Fixation 更改肯定会对我们通过 URL 传递的 JSESSIONID 产生影响,但是此行为已被删除,但会话仍在下降。
基本上我们安装了 CF10 并打开了 J2EE 会话管理,并且默认的 HTTPOnly 设置为 true。这是一个具有相同应用程序名称的单个 CF 应用程序,setClientCookies 为 false,在应用程序中域结构如下所示:
https://book.domain.com
https://profile.domain.com
https://approve.domain.com
在跨域(之前已经工作多年)之间进行交叉时,会话会中断,CF 会发出一组新的会话标识符。
即使在 onSessionStart() 中如下设置 cookie 也无效:
<cfcookie name="jsessionid" value="#session.sessionid#" domain=".domain.com" secure="true">
有没有人在迁移到 CF10 时遇到过这种行为?
干杯 菲尔
【问题讨论】:
-
你有没有观察到在http和https之间交叉时cookie是否被传递?
-
嗨地牢猎人。当我观察页面的标题时,同一域上的 HTTP 和 HTTPS 之间的转换工作正常。当我在子域之间进行更改时,Coldfusion 会发出一个新的会话 cookie,这就是我试图停止的行为。
-
由于 jsessionid cookie 是在域级别设置的,因此浏览器会将该 cookie 作为子域请求的一部分发送。子域和主域之间是否启用了会话复制?
-
我想知道问题是否是由于从未涉及主域而纯粹是子域。您通过子域登录并在子域之间跳转,但父域是一个完全独立的网站。所以会话cookie不会在book.domain.com和profile.domain.com之间持久化
标签: session tomcat cookies coldfusion https