什么是当前的CF9.02会话Cookie管理最佳实践?

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管理做什么(即应用了会话固定修复程序).

Mig*_*l-F 1

嗯,不使用 CFID/CFToken。我已经很多年没有使用这些客户端变量了,而是使用 ColdFusion 会话管理。信任客户的信息风险太大(在我看来)。

\n

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

\n

您在什么情况下仍需要使用 CFID/CFToken?

\n

Adobe 文章的摘录:

\n
\n

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

\n

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

\n
\n

  • 仅供参考,这句话措辞不当,给人一种错误的安全感。最后一句中缺少“浏览器”一词。“...J2EE 会话管理机制为每个浏览器会话创建一个新的会话标识符...”。因此,使用 jsessionid 可能会减少攻击发生的时间,但容易受到与 CFID/CFToken cookies/url 参数相同的攻击。 (2认同)
  • J2EE 会话仍然依赖于从浏览器设置/发送的客户端 cookie _“您可以将 ColdFusion 配置为使用 J2EE servlet 会话管理,而不是会话变量的 ColdFusion 会话管理。这种会话管理方法不使用 CFID 和 CFToken 值,但确实使用客户端 jsessionid 会话管理 cookie"_ [link](http://help.adobe.com/en_US/ColdFusion/9.0/Developing/WSc3ff6d0ea77859461172e0811cbec0c35c-7fef.html) 您是正确的,因为 JSessionID 不能通过 URL 传递,但它们可以通过 cookie 传递,并且仍然受到浏览器的尊重。 (2认同)