【问题标题】:What are current CF9.02 Session Cookie Management Best Practices?当前的 CF9.02 会话 Cookie 管理最佳实践是什么?
【发布时间】:2012-09-13 23:44:35
【问题描述】:

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

【问题讨论】:

    标签: coldfusion session-cookies coldfusion-9


    【解决方案1】:

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

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

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

    该 Adob​​e 文章的摘录:

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

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

    【讨论】:

    • 仅供参考,这句话措辞不当,给人一种虚假的安全感。最后一句中缺少“浏览器”一词。 “...J2EE 会话管理机制为每个浏览器会话创建一个新的会话标识符...”。因此,使用 jsessionid 可能会减少可能发生攻击的时间,但容易受到与 CFID/CFToken cookies/url 参数相同的攻击。
    • 文本直接取自文档。我认为最大的不同是使用 CFID/CFToken 这些值实际上可以从客户端传递到您的 ColdFusion 服务器,并且 ColdFusion 尊重(使用)它们。使用 J2EE 会话,服务器管理会话(浏览器会话)而不依赖于从客户端传递的 cookie(或 url 值)。
    • J2EE 会话仍然依赖于从浏览器设置/发送的客户端 cookie "您可以将 ColdFusion 配置为使用 J2EE servlet 会话管理而不是 ColdFusion 会话管理来处理会话变量。此方法会话管理不使用 CFID 和 CFToken 值,但确实使用客户端 jsessionid 会话管理 cookie" link 你是正确的,JSessionID 不能通过 URL 传递,但它们可以通过cookie 并且仍然受到浏览器的尊重。
    • 是的,我同意你们的观点,并意识到 J2EE 会话仍然容易受到攻击,但不如 CFID/CFToken 脆弱。进一步阅读摘录会引导您here,它提供了 J2EE 会话管理相对于 ColdFusion 会话管理的更多好处。 J2EE 会话列出的第一个案例是您希望最大化会话安全性,特别是如果您还使用客户端变量
    猜你喜欢
    • 2021-12-04
    • 2017-08-26
    • 1970-01-01
    • 2011-02-06
    • 2016-10-23
    • 2018-07-20
    • 1970-01-01
    • 2014-01-24
    • 2011-12-12
    相关资源
    最近更新 更多