CF11正在将这些cookie的值添加到看起来是应用程序名称哈希的内容中。
在CF9中,我的CFID值是:2219 在CF11中,这变为Z3ir0kan93jawdd3kz38onobced8tfgn2kc3fy8i0w884gqffsn-2219
我需要能够在同一个池中运行CF9和CF11服务器(当我们进行升级时),但cookie值的差异意味着如果您登录CF9服务器并导航到CF11服务器,你将被退出。
有没有办法让CF11对这些cookie值使用CF9格式?
答案 0 :(得分:2)
出于安全原因,CFID / CFTOKEN的值已从简单的数值更改为字符串+数字。
http://helpx.adobe.com/coldfusion/kb/predictable-cookie-session-ids-reported.html
<强>原因强>
在其默认配置中,Adobe ColdFusion使用一对名为CF_ID和CF_TOKEN的cookie来管理用户会话。这两个饼干只能相互串联使用 - 它们从不单独使用。
即使CF_ID是连续的,CF_TOKEN也是随机的并且是不可预测的。由于它是两个cookie的组合使用,因此产生的组合也是不可预测的。
<强>解决方案强>
要在合规性测试中消除此错误,您可以将ColdFusion配置为使用J2EE会话标识符而不是CF_ID和CF_TOKEN。
注意:此解决方案不会使您的ColdFusion服务器更安全或更不安全。
因此,让CF 11使用旧式数字CF_ID值不符合您的最佳利益。
如果您要在同一个池中安装CF 9和CF 11,请求可以从一个池随机反弹,那么您将遇到许多其他问题。大约两年前,我花了大约一年的时间从CF 8转换到CF 9(是的,是的,我知道)。
例如,如果您碰巧使用任何CF UI组件,那么当在CF X上启动的请求呈现HTML&amp;时,您将遇到问题。 JS转到CF Y,它更新了该功能的JS功能。我们将它们全部翻录并转换为jQuery / jQuery UI
我们也遇到了一些简单的事情:
this.name = HASH(getDirectoryFromPath(getCurrentTemplatePath()));
getDirectoryFromPath()
在8中返回大写值,在9中返回小写值(反之亦然)。我们必须将其更新为:
this.name = HASH(Lcase(getDirectoryFromPath(getCurrentTemplatePath())));
为了让它们使用相同的应用程序名称,因此使用会话。
你最好在自己的游泳池中运行CF 11并对其进行完整的回归测试,以找出需要更新的内容。