Coldfusion 11中的CFToken / CFID

时间:2015-01-21 12:25:25

标签: cookies coldfusion

CF11正在将这些cookie的值添加到看起来是应用程序名称哈希的内容中。

在CF9中,我的CFID值是:2219 在CF11中,这变为Z3ir0kan93jawdd3kz38onobced8tfgn2kc3fy8i0w884gqffsn-2219

我需要能够在同一个池中运行CF9和CF11服务器(当我们进行升级时),但cookie值的差异意味着如果您登录CF9服务器并导航到CF11服务器,你将被退出。

有没有办法让CF11对这些cookie值使用CF9格式?

1 个答案:

答案 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并对其进行完整的回归测试,以找出需要更新的内容。