ColdFusion:CFID和CFToken对每个页面请求进行更改

时间:2016-03-03 14:03:45

标签: security session cookies coldfusion

我被要求使用J2EE变量而不是将CFIDCFTOKEN存储在Cookie中,因为CFID被报告为不合规:Predictable Cookie Session ID's Reported by Compliance Tests

  • 在我的Application.cfm中,我添加了 setclientcookies =“false”。这会阻止CFID和CFToken被写为cookie。
  • 在ColdFusion Admin中,我启用了J2EE Session Variables

所以我现在有一个带有JESSIONID的cookie,以及一个带有URLToken的会话变量,其中包含CFID和CFTOKEN。但是,每次刷新页面时,CFID和CFTOKEN都会发生变化。他们不像以前那样坚持下去。这意味着我们的管理员登录系统失败。

我已经完成了自己的谷歌搜索,但到目前为止一无所获。我发现的一个建议是编写代码以保留CFID和CFTOKEN。但是,这不是一个好的解决方案。

有什么建议吗?

Barebones测试

我安装了CF 10 Developer Edition并启用了J2EE Session Variables

使用

创建了一个Application.cfm
<cfapplication name="test" sessionmanagement="Yes" setclientcookies="false">

和一个带

的index.cfm
<h1>Cookie</h1>
<cfdump var="#cookie#">
<h1>Session</h1>
<cfdump var="#session#">

每次刷新Session.URLToken都会发生变化

  

CFID = 2212&安培; CFTOKEN = 41db974c3d2eb4b6-640C21AE-FD53-499C-71FBEBA35D6B09E8&安培; JSESSIONID = E28AA17629928FB6F9E17674AC85C7AA.cfusion

     

CFID = 2213&安培; CFTOKEN = bb791a304929d0f5-6425021B-部A31b-B9C8-3628AE391B0F48FF&安培; JSESSIONID = E28AA17629928FB6F9E17674AC85C7AA.cfusion

进一步思考

在我们的登录系统中使用CFIDCFTOKEN来验证用户会话是否匹配,也许我应该将其更改为存储并验证JESSIONID。也许CFIDCFTOKEN改变无关紧要。会话范围实际上是维护的,因此这可能完全没有问题。

<cfparam name="session.timestamp" default="#now()#">

1 个答案:

答案 0 :(得分:2)

setClientCookies =&#34;假&#34;表示coldfusion服务器不会为当前会话创建cookie。 CFID和CFToken仍然存在,并且将是非持久性的。 在你的例子中检查jsessionid值在两种情况下都是相同的,这就是你应该使用的而不是CFID&amp; CFToken仅在需要时。 你是对的,你的会话状态是在你启用J2EE会话变量时维护的。