Session Coldfusion 10跨域HTTPS会话问题

Session Coldfusion 10跨域HTTPS会话问题,session,tomcat,cookies,coldfusion,https,Session,Tomcat,Cookies,Coldfusion,Https,只是想知道是否有人在CF10中遇到过这样一个问题,即在HTTPS下跨同一应用程序的子域时,会话会被丢弃,即使JSESSIONID在这些链接中被显式传递,而在CF10之前,这些链接已经为我们工作了5年多,没有失败。从我所读到的内容来看,CF10中的会话固定安全问题似乎有了很大的改变,这解释了为什么会话会在HTTP和HTTPS之间跳转,但这并不能解释我的问题。我知道CF 9.02和CF中引入的会话固定更改肯定会对我们通过URL传递JSESSIONID产生影响,但是此行为已被删除,会话仍在删除 实际上

只是想知道是否有人在CF10中遇到过这样一个问题,即在HTTPS下跨同一应用程序的子域时,会话会被丢弃,即使JSESSIONID在这些链接中被显式传递,而在CF10之前,这些链接已经为我们工作了5年多,没有失败。从我所读到的内容来看,CF10中的会话固定安全问题似乎有了很大的改变,这解释了为什么会话会在HTTP和HTTPS之间跳转,但这并不能解释我的问题。我知道CF 9.02和CF中引入的会话固定更改肯定会对我们通过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时遇到过这种行为吗

干杯
Phil

因此,在玩弄了许多设置和想法之后,我现在通过HTTPS和使用安全(基于浏览器的)cookies,在我最初的问题中提到的子域之间进行会话,从而满足PCI-DSS合规性要求。所有通过URL传递的JSSessionID都已从系统中删除,并且以下行已添加到构造函数和onSessionStart()的Application.cfc中。请注意下面的setDomainCookies和setClientCookies设置为false以及特定于域的sessioncookie设置,并注意onSessionStart my cookie设置为不过期,以确保其仅在浏览器期间持续,以及新的CF10 encodeValue属性,以防止cookie值出现奇怪的编码问题:

<cfcomponent hint="Application" output="false">

<cfscript>

   // Application Settings
   this.name = "myApplication";
   this.applicationTimeout = createTimeSpan(0,2,0,0);
   this.clientManagement = false;
   this.loginStorage = "session";
   this.sessionManagement = true;
   this.sessionTimeout = createTimeSpan(0,1,0,0);
   this.setClientCookies = false;
   this.setDomainCookies = false;

   // Domain specific settings for session persistence over subdomains
   this.sessioncookie.domain = '.domain.com';
   this.sessioncookie.httponly = true;

</cfscript>

<cffunction name="onSessionStart" returnType="void" output="false">
    <cfcookie name="jsessionid" value="#session.sessionid#" secure="true" domain=".domain.com" encodeValue="false">
</cffunction>

</cfcomponent>

//应用程序设置
this.name=“myApplication”;
this.applicationTimeout=createTimeSpan(0,2,0,0);
this.clientManagement=false;
this.loginStorage=“session”;
this.sessionManagement=true;
this.sessionTimeout=createTimeSpan(0,1,0,0);
this.setClientCookies=false;
this.setDomainCookies=false;
//子域上会话持久性的特定于域的设置
this.sessionokie.domain='.domain.com';
this.sessionokie.httponly=true;

您是否观察到在http和https之间切换时cookie是否被传递?嗨,Dungeon Hunter。当我观察页面的标题时,相同域上HTTP和HTTPS之间的转换工作正常。当我在子域之间切换时,Coldfusion会发出一个新的会话cookie,这就是我试图停止的行为。由于jsessionid cookie是在域级别设置的,浏览器会将该cookie作为子域请求的一部分发送。是否在子域和主域之间启用了会话复制?我想知道问题是否是因为主域从未涉及,而只是子域。您通过子域登录并在子域之间跳转,但父域是一个完全独立的网站。因此,会话cookie不会在say和say之间持久化