【问题标题】:Could not disable HttpOnly flag in browser via ColdFusion无法通过 ColdFusion 在浏览器中禁用 HttpOnly 标志
【发布时间】:2020-04-27 20:13:23
【问题描述】:

在我们的应用程序中,我们使用 J2EE 会话变量进行会话管理。我们最近从 ColdFusion 9 迁移到 ColdFusion 2018。迁移后,注销功能无法正常工作。我们发现,在 ColdFusion 2018 中,cookie JSESSIONID 没有从浏览器中清除,因为浏览器中的 HttpOnly 标志已设置为 true。

我们尝试通过以下方式在浏览器中禁用此 HttpOnly 标志,

By disabling HttpOnly flag and Global Script Protection in CF admin.
By modifying the jvm.config via CF admin by adding "-Dcoldfusion.sessioncookie.httponly=false".

但是这样 HttpOnly 标志仍然在浏览器中显示为启用。因此,客户端脚本无法清除 cookie JSESSIONID,因此注销功能无法正常工作。

在 CF2018 中,有什么方法可以在浏览器中为 cookie JSESSIONID 禁用 HttpOnly 标志?

注意:

在 CF9 中,在浏览器中为 cookie JSESSIONID 禁用了 HttpOnly 标志。 我们使用的是CF2018企业版(试用版,尚未过期)。 更新 CF admin 中的设置后重新启动 CF 服务。

【问题讨论】:

  • 在尝试使用 CF 重新设置之前,您是否在浏览器中手动删除了 HttpOnly JSESSIONID cookie?
  • 我尝试手动删除它然后注销工作正常。

标签: coldfusion coldfusion-9 cookie-httponly coldfusion-2018


【解决方案1】:

您可能需要重构您的应用程序以解决 CF 9 开箱即用无法处理的许多 OWASP 漏洞。根据您的受众,您应该让第 3 方对您的代码库执行安全渗透测试。

您将需要重构您的注销流程。您不应该在jsessionid cookie 上禁用httpOnly,它可以防止跨站点脚本攻击。

https://www.owasp.org/index.php/HttpOnly

根据微软开发者网络,HttpOnly 是一个 Set-Cookie HTTP 响应标头中包含的附加标志。使用 生成 cookie 时的 HttpOnly 标志有助于降低 访问受保护 cookie 的客户端脚本(如果浏览器 支持)。

https://docs.microsoft.com/en-us/previous-versions//ms533046(v=vs.85)?redirectedfrom=MSDN

使用 JEE 会话 ID 时,您需要将其添加到注销过程的一部分:

<cfset getPageContext().getSession().invalidate()>

然后重定向到另一个页面,例如您的登录屏幕。这将删除 jsessionid cookie 并实际上使服务器上的 JEE 会话无效。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2013-04-25
    • 2017-02-07
    • 1970-01-01
    • 2021-07-05
    • 2015-06-27
    • 1970-01-01
    • 2017-11-02
    • 1970-01-01
    相关资源
    最近更新 更多