无法通过 ColdFusion 在浏览器中禁用 HttpOnly 标志



在我们的应用程序中,我们使用 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 管理中的设置后,重新启动了 CF 服务。

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

您将需要重构注销过程。您不应该在jsessionidcookie 上禁用httpOnly,这是对跨站点脚本攻击的一种预防措施。

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

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

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

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

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

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

最新更新