Dav*_*ave 6 coldfusion session-cookies coldfusion-9
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>
Run Code Online (Sandbox Code Playgroud)
要么
<cfif IsDefined("Cookie.CFID") AND IsDefined("Cookie.CFTOKEN")>
<cfcookie name="CFID" value="#Cookie.CFID#">
<cfcookie name="CFTOKEN" value="#Cookie.CFTOKEN#">
</cfif>
Run Code Online (Sandbox Code Playgroud)
取决于你与谁交谈.
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 此修复程序(以及Web上的许多其他类似修复程序)通过修改上面的cfcookie代码.
这是一年之后,我想知道当运行CF9.02时人们正在为CFID/CFToken管理做什么(即应用了会话固定修复程序).
嗯,不使用 CFID/CFToken。我已经很多年没有使用这些客户端变量了,而是使用 ColdFusion 会话管理。信任客户的信息风险太大(在我看来)。
\nAdobe 文档实际上有一篇关于管理客户端状态的很好的文章:管理客户端状态
\n您在什么情况下仍需要使用 CFID/CFToken?
\nAdobe 文章的摘录:
\n\n\n拥有 user\xe2\x80\x99s CFToken 和 CFID cookie 的黑客可以通过在 user\xe2\x80\x99s 会话期间使用窃取的 CFToken 和 CFID cookie 访问网页来获取用户数据。虽然这种情况不太可能发生,但理论上是可能的。
\n您可以通过选择 ColdFusion 管理员内存变量页面上的使用 J2EE 会话变量选项来消除此漏洞。J2EE 会话管理机制为每个会话创建一个新的会话标识符,并且不使用 CFToken 或 CFID cookie 值。
\n