0

我有一个登录页面,它位于一个域上,而应用程序位于另一个域上。

当我使用来自单独域的登录名时,不会为第二个域存储会话变量,即使这是创建它们的域。

需要明确的是,我不是在域之间共享会话

登录域在应用程序域上运行脚本,应用程序在其中创建会话变量。在应用程序域中调用重定向时,不会传输此变量。

如果我从同一个域调用脚本,会话将按预期存储。有趣的是,直到今天这一切都很好。某些 cf 设置可能已更改。

我注意到正在传递 CFID 和 CFTOKEN,是否有可能使用来自引用网站的 CFID 和 CFTOKEN 编写会话?

如果是这样,我该如何防止呢?

4

1 回答 1

3

您可以通过在 Application.cfc 中设置来覆盖默认会话 cookie 行为this.setclientcookies = false,并在 Application.cfc 中发出您的 cfcookieonSessionStart()

例如

<cfcomponent>
  <cfset this.sessionmanagement = true>
  <cfset this.setclientcookies = false>
  <cffunction name="onSessionStart">
      <cfcookie name="CFID" value="#session.cfid#" domain=".subdomain.domain.com">
      <cfcookie name="CFTOKEN" value="#session.cftoken#" domain=".subdomain.domain.com">
  </cffunction>
<cfcomponent>

当您使用它时,最好将该httpOnly属性也设置为 true。

于 2013-03-05T21:50:17.947 回答