6

ColdFusion cookie 会话 cookie 管理的常见“最佳实践”是实现如下内容:

<cfset this.setClientCookies = false />
<cfif NOT IsDefined( "cookie.cfid" ) OR NOT IsDefined( "cookie.cftoken" )>
    <cfcookie name="cfid" value="#session.cfid#" domain=".#cgi.HTTP_HOST#" path="/test/sessiontest">
    <cfcookie name="cftoken" value="#session.cftoken#" domain=".#cgi.HTTP_HOST#" path="/test/sessiontest">
</cfif>

或者

<cfif IsDefined("Cookie.CFID") AND IsDefined("Cookie.CFTOKEN")>
    <cfcookie name="CFID" value="#Cookie.CFID#">
    <cfcookie name="CFTOKEN" value="#Cookie.CFTOKEN#">
</cfif>

取决于你和谁说话。

Adobe 随后发布了http://www.adobe.com/support/security/bulletins/apsb11-04.html以及后来针对此原始修复的修复,此处讨论:http: //www.shilpikhariwal.com/2011 /03/update-on-security-hot-fix-feb-2011.html

原始修复会导致此处描述的许多问题:http: //cfsimplicity.com/4/coldfusion-security-hotfix-changes-session-behaviour 此修复(以及网络上的许多其他类似修复)通过修改上面的cfcookie代码。

一年后,我想知道在运行 CF9.02 时,人们目前正在为 CFID/CFToken 管理做什么(即,应用了会话固定修复。)

4

1 回答 1

1

嗯,不使用 CFID/CFToken。多年来我没有使用这些客户端变量,而是使用 ColdFusion 会话管理。相信来自客户的那些(在我看来)太冒险了。

Adobe 文档实际上有一篇关于管理客户端状态的很好的文章:管理客户端状态

您仍然需要使用 CFID/CFToken 的理由是什么?

该 Adob​​e 文章的摘录:

拥有用户 CFToken 和 CFID cookie 的黑客可以通过在用户会话期间使用被盗的 CFToken 和 CFID cookie 访问网页来访问用户数据。虽然这种情况不太可能发生,但理论上是可能的。

您可以通过选择 ColdFusion 管理员内存变量页面上的使用 J2EE 会话变量选项来消除此漏洞。J2EE 会话管理机制为每个会话创建一个新的会话标识符,并且不使用 CFToken 或 CFID cookie 值。

于 2012-09-13T15:29:06.593 回答