【发布时间】:2016-06-16 21:44:05
【问题描述】:
我被要求使用 J2EE 变量并且不要将 CFID 和 CFTOKEN 存储在 cookie 中,因为 CFID 被报告为不合规:Predictable Cookie Session ID's Reported by Compliance Tests
- 在我的 Application.cfm 中,我添加了 setclientcookies="false"。这会阻止 CFID 和 CFToken 被写入 cookie。
- 在 ColdFusion Admin 中,我启用了 J2EE 会话变量
所以我现在有一个带有JESSIONID 的cookie,以及一个带有URLToken 的包含CFID 和CFTOKEN 的会话变量。但是,每次我刷新页面时,CFID 和 CFTOKEN 都会发生变化。他们不像以前那样坚持下去。这意味着我们的管理员登录系统失败了。
我自己在谷歌上搜索过,但到目前为止一无所获。我发现的一个建议是编写代码来持久化 CFID 和 CFTOKEN。但是,这感觉不是一个好的解决方案。
有什么建议吗?
准系统测试
我安装了 CF 10 Developer Edition 并启用了 J2EE 会话变量
用
创建了一个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
进一步的想法
CFID和CFTOKEN在我们的登录系统中用于验证用户会话匹配,也许我应该将其更改为存储和验证JESSIONID。也许CFID和CFTOKEN的变化并不重要。会话范围实际上得到了维护,因此这可能完全不是问题。
<cfparam name="session.timestamp" default="#now()#">
【问题讨论】:
-
你有什么代码可以回答这个问题吗?
-
您是在处理单个 ColdFusion 服务器还是多个负载平衡服务器?进行更改后您是否清除(删除)cookie?
-
@JamesAMohler - 我只是在转储范围,以查看 CFID 是否已通过 cookie 使用和 J2EE 会话更改
-
@Miguel-F 单 CF 服务器 ColdFusion 10 企业版
-
我相信也许我们的管理员登录对 CFID 和 CFTOKEN 的依赖没有改变,是我们的问题不是 ColdFusion 是的,这可能是问题所在。您的代码无需使用任何会话标识符。让 ColdFusion (JEE) 服务器为您处理会话管理。这就是它的设计目的。
标签: security session cookies coldfusion